Condividi tramite


Come ricevere testo (HTML)

[ Questo articolo è rivolto agli sviluppatori per Windows 8.x e Windows Phone 8.x che realizzano app di Windows Runtime. Gli sviluppatori che usano Windows 10 possono vedere Documentazione aggiornata ]

Il testo è forse il formato dati più comunemente condiviso dagli utenti. Oltre a essere la prima scelta per contenuti quali gli aggiornamenti di stato, è l'opzione consigliata per app che condividono link, HTML e altre informazioni.

Quando scrivi un'app di destinazione, in genere devi supportare il testo come parte della condivisione. In questo modo gli utenti potranno selezionare la tua app in numerose situazioni. Premesso questo, non supportare il formato testo se ritieni che possa solo confondere gli utenti. Se ad esempio la tua app server principalmente a gestire file, una rappresentazione dei file in formato testo non è quello che gli utenti si aspettano dall'app.

Cosa sapere

Tecnologie

Prerequisiti

  • Occorre avere già familiarità con Visual Studio e i modelli associati.
  • Occorre avere già familiarità con JavaScript.

Istruzioni

Passaggio 1: Supporto del contratto Condivisione

Per consentire all'app di ricevere contenuto condiviso, devi dichiarare che supporta il contratto Condivisione, grazie al quale il sistema sa che l'app è disponibile a ricevere contenuto. Se usi un modello di Microsoft Visual Studio per creare la tua app, ecco come puoi supportare il contratto Condivisione:

  1. Apri il file manifesto (package.appxmanifest).
  2. Apri la scheda Dichiarazioni.
  3. Scegli Condivisione destinazione dall'elenco Dichiarazioni disponibili.
  4. Fai clic su Aggiungi per aggiungere il supporto del contratto Condivisione destinazione nella tua app.

Passaggio 2: Specificare che l'app supporta il testo

Quando scrivi un'app di destinazione, puoi specificare sia i tipi che i formati dei file. Per specificare i tipi di file supportati:

  1. Apri il file manifesto.
  2. Nella sezione Tipi file supportati fai clic su Aggiungi nuovo.
  3. Digita .txt. Devi includere il punto (.). prima di txt e non quello dopo.

Per specificare che supporti il testo come formato dati:

  1. Apri il file manifesto.
  2. Nella sezione Formati dati fai clic su Aggiungi nuovo.
  3. Digita "testo" (senza le virgolette).

I passaggi precedenti consentono di aggiungere al manifesto la sezione seguente:

<Extensions>
  <Extension Category="windows.shareTarget">
    <ShareTarget>
      <DataFormat>text</DataFormat>
    </ShareTarget>
  </Extension>
</Extensions>

Nota  Puoi specificare un diverso punto di ingresso quando la tua app è attivata per il contratto Condivisione destinazione. A questo scopo, modifica la voce del punto di ingresso della pagina Start nella sezione delle impostazioni App della dichiarazione Condivisione destinazione nel manifesto del pacchetto. Consigliamo vivamente di usare anche un file JavaScript separato per gestire l'attivazione di questa pagina. Per un approfondimento, vedi l'esempio di app di destinazione per la condivisione di contenuto.

 

Passaggio 3: Aggiungere un gestore eventi per rilevare quando viene attivata l'app

Il sistema attiva l'app quando un utente la seleziona per condividere il contenuto. Poiché l'app può essere attivata in svariati modi, devi aggiungere il codice per rilevare il motivo dell'attivazione. Per farlo, controlla il valore della proprietà kind.

app.onactivated = function (args) {
    if (args.detail.kind === activation.ActivationKind.launch) {
        // The application has been launched. Initialize as appropriate.
    } else if (args.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.shareTarget) {
        ...
    }
};

Passaggio 4: Recuperare l'oggetto ShareOperation

L'oggetto ShareOperation contiene tutti i dati necessari per consentire all'app di recuperare il contenuto che un utente vuole condividere.

shareOperation = args.detail.shareOperation;

Passaggio 5: Ritornare rapidamente dal gestore eventi attivato.

Il gestore eventi activated deve ritornare rapidamente. Aggiungere in coda un evento asincrono dal gestore eventi activated, di modo che l'elaborazione dei dati condivisi avvenga al ritorno del gestore eventi.

WinJS.Application.addEventListener("shareready", shareReady, false);
WinJS.Application.queueEvent({ type: "shareready" });

I passaggi rimanenti implementano la funzione shareReady.

Passaggio 6: Verificare se i dati condivisi contengono testo.

La proprietà shareOperation.data contiene un oggetto DataPackageView. Questo oggetto è di fatto una versione di sola lettura dell'oggetto DataPackage usato dall'app di origine per creare i dati. Usa questo oggetto per verificare se il contenuto da condividere è disponibile in formato testo.

if (shareOperation.data.contains(Windows.ApplicationModel.DataTransfer.StandardDataFormats.text)) {
    // Code to process text goes here.      
}

È buona regola controllare che il DataPackage contenga il formato di dati in cui sei interessato, anche se la tua app supporta solo un formato. In tal modo sarà più semplice in seguito supportare altri formati di dati.

Passaggio 7: Elaborare il testo

Per recuperare il testo, chiama il metodo DataPackageView.getText.

shareOperation.data.getTextAsync().done(function (text) {
    // To output the text using this example, 
    // you need a div tag with an id of "output" in your HTML file.
    document.getElementById("output").innerText = text;
});

Naturalmente l'operazione da eseguire sul testo dipende dall'app.

Passaggio 8: Chiamare reportCompleted

Dopo che l'app ha finito di condividere correttamente il contenuto, chiama reportCompleted. Dopo aver chiamato questo metodo, il sistema chiude l'app.

shareOperation.reportCompleted();

Osservazioni

Per vedere l'intera esperienza end-to-end di un'app che riceve testo come parte della condivisione, esamina il codice dell'esempio di app di destinazione per la condivisione di contenuto.

var shareOperation = null;

function shareReady(args) {
    if (shareOperation.data.contains(Windows.ApplicationModel.DataTransfer.StandardDataFormats.text)) {
        shareOperation.data.getTextAsync().done(function (textValue) {
            // To output the text using this example, you need a div tag with an 
            // id of "output" in your HTML file.
            document.getElementById("output").innerText = textValue;
        });
    }
}

app.onactivated = function (args) {
    if (args.detail.kind === activation.ActivationKind.launch) {
        // The application has been launched. Initialize as appropriate.
        args.setPromise(WinJS.UI.processAll());
    } else if (args.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.shareTarget) {
        // This app has been activated share.
        args.setPromise(WinJS.UI.processAll());

        // We receive the ShareOperation object as part of the eventArgs.
        shareOperation = args.detail.shareOperation;

        // We queue an asychronous event so that working with the ShareOperation object 
        // does not block or delay the return of the activation handler.
        WinJS.Application.addEventListener("shareready", shareReady, false);
        WinJS.Application.queueEvent({ type: "shareready" });
    }
};

Argomenti correlati

Esempio di app di destinazione per la condivisione di contenuto

Condivisione e scambio di dati

Come ricevere file

Come ricevere codice HTML

Come ricevere un collegamento

Guida introduttiva: Ricezione di contenuto condiviso

DataPackage

Windows.ApplicationModel.DataTransfer

Windows.ApplicationModel.DataTransfer.Share

Linee guida per il debug delle app di destinazione