Condivisione con I miei contatti

Importante

I miei contatti non è più supportato nelle versioni di Windows 11 e Windows 10 con KB5034203 applicate.

La funzionalità I miei contatti consente agli utenti di aggiungere contatti alla barra delle applicazioni e di rimanere in contatto con loro facilmente da qualsiasi posizione in Windows, indipendentemente dall'applicazione a cui sono connessi. Ora gli utenti possono condividere il contenuto con i contatti aggiunti trascinando i file da Esplora file all'area I miei contatti. Possono anche condividere contenuti con qualsiasi contatto presente nell'archivio dei contatti di Windows tramite l'accesso alla condivisione standard. Continuare a leggere per informazioni su come abilitare l'applicazione come destinazione di condivisione dei contatti.

My people sharing panel

Requisiti

Panoramica

È necessario eseguire tre passaggi per abilitare l'applicazione come destinazione di condivisione dei contatti:

  1. Dichiarare il supporto per il contratto di attivazione shareTarget nel manifesto dell'applicazione.
  2. Annotare i contatti che gli utenti possono condividere con l'app.
  3. Supportare più istanze dell'applicazione in esecuzione contemporaneamente. Gli utenti devono essere in grado di interagire con una versione completa dell'applicazione, anche usandola per condividerla con altri utenti. Lo possono fare ad esempio da più finestre di condivisione contemporaneamente. Per supportare questo problema, l'applicazione deve essere in grado di eseguire più visualizzazioni contemporaneamente. Per informazioni su come eseguire questa operazione, vedere l'articolo "Mostrare più visualizzazioni per un'app".

Al termine di questa operazione, l'applicazione verrà visualizzata come destinazione di condivisione nella finestra Condivisione di I miei contatti, che può essere avviata in due modi:

  1. Un contatto viene scelto tramite l'accesso alla condivisione.
  2. I file vengono trascinati e rilasciati su un contatto aggiunto alla barra delle applicazioni.

Dichiarazione del supporto per il contratto di condivisione

Per dichiarare il supporto per l'applicazione come destinazione di condivisione, aprire prima l'applicazione in Visual Studio. In Esplora soluzioni fare clic con il pulsante destro del mouse sul file Package.appxmanifest e selezionare Apri con. Dal menu selezionare Editor XML (testo) e fare clic su OK. Apportare quindi le modifiche seguenti al manifesto:

Prima

<Applications>
	<Application Id="MyApp"
	  Executable="$targetnametoken$.exe"
	  EntryPoint="My.App">
	</Application>
</Applications>

Dopo

<Applications>
	<Application Id="MyApp"
	  Executable="$targetnametoken$.exe"
	  EntryPoint="My.App">
		<Extensions>
			<uap:Extension Category="windows.shareTarget">
				<uap:ShareTarget Description="Share with MyApp">
					<uap:SupportedFileTypes>
						<uap:SupportsAnyFileType/>
					</uap:SupportedFileTypes>
					<uap:DataFormat>Text</uap:DataFormat>
					<uap:DataFormat>Bitmap</uap:DataFormat>
					<uap:DataFormat>Html</uap:DataFormat>
					<uap:DataFormat>StorageItems</uap:DataFormat>
					<uap:DataFormat>URI</uap:DataFormat>
				</uap:ShareTarget>
			</uap:Extension>
		 </Extensions>
	</Application>
</Applications>

Questo codice aggiunge il supporto per tutti i file e i formati di dati, ma è possibile scegliere di specificare i tipi di file e i formati di dati supportati (vedere la documentazione della classe ShareTarget per altri dettagli).

Annotazione dei contatti

Per consentire alla finestra Condivisione di I miei contatti di visualizzare l'applicazione come destinazione di condivisione per i contatti, è necessario scriverli nell'archivio dei contatti di Windows. Per informazioni su come scrivere i contatti, vedere l'esempio di integrazione di una scheda contatto.

Affinché l'applicazione venga visualizzata come destinazione di condivisione dei contatti durante la condivisione a un contatto, deve scrivere un'annotazione in tale contatto. Le annotazioni sono parti di dati dell'applicazione associate a un contatto. L'annotazione deve contenere la classe attivabile corrispondente alla visualizzazione desiderata nel membro ProviderProperties e dichiarare il supporto per l'operazione Share.

È possibile annotare i contatti in qualsiasi momento mentre l'app è in esecuzione, ma in genere conviene annotare i contatti non appena vengono aggiunti all'archivio contatti di Windows.

if (ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 5))
{
	// Create a new contact annotation
	ContactAnnotation annotation = new ContactAnnotation();
	annotation.ContactId = myContact.Id;

	// Add appId and Share support to the annotation
	String appId = "MyApp_vqvv5s4y3scbg!App";
	annotation.ProviderProperties.Add("ContactShareAppID", appId);
	annotation.SupportedOperations = ContactAnnotationOperations::Share;

	// Save annotation to contact annotation list
	// Windows.ApplicationModel.Contacts.ContactAnnotationList 
	await contactAnnotationList.TrySaveAnnotationAsync(annotation);
}

"appId" è il nome della famiglia di pacchetti, seguito da '!' e dall'ID classe attivabile. Per trovare il nome della famiglia di pacchetti, aprire Package.appxmanifest usando l'editor predefinito e cercare nella scheda "Packaging". In questo caso, "App" è la classe attivabile corrispondente alla visualizzazione di condivisione.

Esecuzione come destinazione di condivisione di I miei contatti

Infine, per eseguire l'app, eseguire l'override del metodo OnShareTargetActivated nella classe principale dell'app per gestire l'attivazione della destinazione di condivisione. La proprietà ShareTargetActivatedEventArgs.ShareOperation.Contacts conterrà i contatti condivisi o sarà vuota se si tratta di un'operazione di condivisione standard (non una condivisione di I miei contatti).

protected override void OnShareTargetActivated(ShareTargetActivatedEventArgs args)
{
	bool isPeopleShare = false;
	if (ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 5))
	{
		// Make sure the current OS version includes the My People feature before
		// accessing the ShareOperation.Contacts property
		isPeopleShare = (args.ShareOperation.Contacts.Count > 0);
	}

	if (isPeopleShare)
	{
  		// Show share UI for MyPeople contact(s)
	}
	else
	{
		// Show standard share UI for unpinned contacts
	}
}

Vedi anche