Partage de Mes Contacts

Important

La fonction Mes contacts n'est plus prise en charge dans les versions de Windows 11 et Windows 10 sur lesquelles Ko5034203 est appliqué.

La fonction Mes contacts permet aux utilisateurs d’épingler des contacts à leur barre des tâches, ce qui leur permet d'y avoir facilement accès depuis n’importe quel endroit dans Windows, quelle que soit l’application avec laquelle ils sont connectés. Désormais, les utilisateurs peuvent partager du contenu avec leurs contacts épinglés en faisant glisser des fichiers depuis l'Explorateur de fichiers jusque leur épingle Mes contacts. Ils peuvent également partager avec n’importe quel contact dans le magasin de contacts Windows via l'icône de partage standard. Poursuivez la lecture pour savoir comment activer votre application en tant que cible de partage Mes contacts.

Mon panneau de partage de personnes

Spécifications

Vue d’ensemble

Vous devez effectuer trois étapes pour activer votre application en tant que cible de partage Mes contacts :

  1. Déclarez la prise en charge du contrat d’activation shareTarget dans le manifeste de votre application.
  2. Annotez les contacts que les utilisateurs peuvent partager à l’aide de votre application.
  3. Activez la prise en charge simultanée de plusieurs instances de l'application. Les utilisateurs doivent pouvoir interagir avec une version complète de votre application tout en l’utilisant pour partager avec d’autres utilisateurs. Ils peuvent l’utiliser dans plusieurs fenêtres de partage à la fois. Pour ce faire, votre application doit pouvoir exécuter plusieurs affichages simultanément. Pour savoir comment procéder, consultez l’article « Afficher plusieurs vues d'une application ».

Une fois cette opération effectuée, votre application s’affiche en tant que cible de partage dans la fenêtre de partage Mes contacts, qui peut être lancée de deux manières :

  1. Un contact est choisi via l'icône de partage.
  2. Le ou les fichiers sont glissés et déplacés sur un contact épinglé à la barre des tâches.

Déclaration de la prise en charge du contrat de partage

Pour déclarer la prise en charge de votre application en tant que cible de partage, ouvrez d’abord votre application dans Visual Studio. Depuis l’Explorateur de solutions, cliquez avec le bouton droit sur le fichier Package.appxmanifest et sélectionnez Ouvrir avec. Dans le menu, sélectionnez Éditeur XML (Texte) et cliquez sur OK. Puis, appliquez les modifications suivantes au manifeste :

Avant le

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

Après

<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>

Ce code ajoute la prise en charge de tous les formats de fichiers et de données, mais vous pouvez choisir de spécifier les types de fichiers et les formats de données pris en charge (consultez la documentation sur la classe ShareTarget pour plus d’informations).

Annotation des contacts

Pour autoriser la fenêtre de partage Mes contacts à afficher votre application en tant que cible de partage pour vos contacts, vous devez les écrire dans le magasin de contacts Windows. Pour savoir comment écrire des contacts, consultez l’exemple d'intégration de carte de visite.

Pour que votre application apparaisse en tant que cible de partage Mes contacts lors du partage vers un contact, celle-ci doit écrire une annotation dans ce contact. Les annotations sont des éléments de données de votre application associés à un contact. L’annotation doit contenir la classe activable correspondant à l’affichage souhaité dans son membre ProviderProperties et déclarer la prise en charge de l’opération Share.

Vous pouvez annoter des contacts à tout moment pendant l’exécution de votre application, mais en règle générale, vous devez les annoter dès qu’ils sont ajoutés au magasin de contacts 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 » est le nom de famille du package, suivi de « ! » et l’ID de classe activable. Pour rechercher le nom de famille de votre package, ouvrez Package.appxmanifest à l’aide de l’éditeur par défaut, puis regardez dans l’onglet « Packaging ». Là, « Application » est la classe activable correspondant à l'affichage Cible de partage.

Exécution en tant que cible de partage Mes contacts

Enfin, pour exécuter l’application, remplacez la méthode OnShareTargetActivated dans la classe principale de votre application pour gérer l’activation de la cible du partage. La propriété ShareTargetActivatedEventArgs.ShareOperation.Contacts contient le ou les contacts en cours de partage, ou est vide s’il s’agit d’une opération de partage standard (pas un partage Mes contacts).

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
	}
}

Voir aussi