2012-11-06 10 views
6

Prima di tutto, sto condividendo il contenuto della mia applicazione windows 8 su un'altra app (ad esempio Mailto app):È possibile impostare un oggetto per l'app di posta nell'applicazione metropolitana di Windows 8, se utilizzo il contratto di condivisione e condivido i file?

Ora sto condividendo i file con l'applicazione mailto utilizzando il contratto di condivisione e condividendo i file dalla mia applicazione,

volevo sapere se: -

  1. posso impostare il soggetto ai file mailto app a cui sto condividendo come un attachement a quella mailto applicazione, in caso affermativo per favore fatemelo sapere come posso Fai questo?

  2. In caso contrario, per favore fatemi sapere qual è il lavoro intorno?

risposta

3

A partire da ora, non è possibile.

Windows 8 ha recentemente introdotto una nuova API chiamata attivazione del protocollo. Con l'attivazione del protocollo, è possibile avviare altre app di Windows 8 dall'applicazione e trasferire i dati. Microsoft ha lavorato su Maps app e ora si può passare informazioni alla Mappa app come mostrato qui (Schema URI per l'applicazione mappe) http://msdn.microsoft.com/en-us/library/windows/apps/jj635237.aspx

Vedi una procedura dettagliata di codice a http://blog.jerrynixon.com/2012/10/walkthrough-using-windows-8-custom.html

Ora, sono sicuro che molto presto, sarà vedi alcuni parametri personalizzati per l'app Mail che puoi passare dalla tua app usando l'attivazione del protocollo.

Solo i miei 2 centesimi

1

No, non è possibile farlo al momento.

1

io non sia Comprendere la domanda correttamente, ma se tutto quello che vogliamo fare è avere la capacità di fare clic sul pulsante "Share" sulla Charms Bar, quindi selezionare il "Mail "App e hanno la possibilità di popolare la riga dell'oggetto visualizzata quando viene visualizzato il fly-out della condivisione" Mail ", è possibile seguire questo approccio:

private DataTransferManager dataTransferManager; //class member 

// put the following code block wherever you need it: 

// Register as a share source 
if (this.dataTransferManager == null) 
{ 
    this.dataTransferManager = DataTransferManager.GetForCurrentView(); 
    this.dataTransferManager.DataRequested -= this.OnDataRequested; 

    try 
    { 
     this.dataTransferManager.DataRequested += new TypedEventHandler<DataTransferManager, DataRequestedEventArgs>(this.OnDataRequested); 
    } 
    catch 
    { 
    }; 
} 

private void OnDataRequested(DataTransferManager sender, DataRequestedEventArgs e) 
{ 
    DataRequest request = e.Request; 
    DataRequestDeferral deferal = request.GetDeferral(); 

    try 
    { 
     // this property will set your subject line 
     // it will also be shown on the Share fly-out (right below the main 
     // heading that says 'Share' 
     request.Data.Properties.Title = GetCustomMailSubjectLine(); 

     if (string.IsNullOrEmpty(request.Data.Properties.Title)) 
     { 
      request.FailWithDisplayText("An operation failed. Please try again."); 
     } 
     else 
     { 
      // this will also be shown on the Share fly-out, right below the 'Title' 
      // property set above 
      request.Data.Properties.Description = GetMyAppsSharingDesciption(); 

      // use request.Data.SetDataProvider() if your data needs to be asynchronously retrieved 
      // otherwise directly use request.Data.SetData() (or one of the other 
      //methods depending on what you need) 

      request.Data.SetDataProvider(StandardDataFormats.Html, RetrieveSharedData); 
     } 
    } 
    finally 
    { 
     deferal.Complete(); 
    } 
} 

private async void RetrieveSharedData(DataProviderRequest request) 
{ 
    DataProviderDeferral deferal = request.GetDeferral(); 

    try 
    { 
     // this will set your email's body 
     request.SetData(await GetCustomMailBodyAsync()); 
    } 
    finally 
    { 
     deferal.Complete(); 
    } 
}