Compartilhamento de Minhas Pessoas

Importante

Meu pessoal não tem mais suporte nas versões do Windows 11 e Windows 10 com KB5034203 aplicadas.

O recurso Minhas Pessoas permite que os usuários fixem contatos na barra de tarefas, permitindo que eles permaneçam em contato facilmente de qualquer lugar no Windows, independentemente do aplicativo ao qual estejam conectados. Agora, os usuários podem compartilhar conteúdo com seus contatos fixos arrastando arquivos do Explorador de Arquivos para o marcador Minhas Pessoas. Eles também podem compartilhar com qualquer contato no repositório de contatos do Windows por meio do botão de compartilhamento padrão. Continue lendo para saber como habilitar seu aplicativo como um destino de compartilhamento do Minhas Pessoas.

My people sharing panel

Requisitos

Visão geral

Há três etapas que você deve seguir para habilitar seu aplicativo como um destino de compartilhamento do Minhas Pessoas:

  1. Declare suporte para o contrato de ativação shareTarget no manifesto do aplicativo.
  2. Anote os contatos que os usuários podem compartilhar usando seu aplicativo.
  3. Ofereça suporte a várias instâncias do aplicativo em execução ao mesmo tempo. Os usuários devem ser capazes de interagir com uma versão completa do seu aplicativo enquanto também o usam para compartilhar com outras pessoas. Eles podem usá-lo em várias janelas de compartilhamento ao mesmo tempo. Para oferecer suporte a isso, seu aplicativo precisa ser capaz de executar várias exibições simultaneamente. Para saber como fazer isso, consulte o artigo "mostrar várias exibições para um aplicativo".

Quando você fizer isso, seu aplicativo aparecerá como um destino de compartilhamento na janela de compartilhamento do Minhas Pessoas, que pode ser iniciada de duas maneiras:

  1. Um contato é escolhido por meio do botão compartilhar.
  2. Os arquivos são arrastados e soltos em um contato fixado na barra de tarefas.

Declarando apoio ao contrato de ações

Para declarar suporte para seu aplicativo como um destino de compartilhamento, primeiro abra seu aplicativo no Visual Studio. No Gerenciador de Soluções, clique com o botão direito do mouse em Package.appxmanifest e selecione Abrir com. No menu, selecione Editor XML (Texto) e clique em OK. Depois, faça as seguintes alterações no manifesto:

Antes

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

Depois

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

Esse código adiciona suporte para todos os arquivos e formatos de dados, mas você pode optar por especificar quais tipos de arquivos e formatos de dados são suportados (consulte a documentação da classe ShareTarget para obter mais detalhes).

Anotando contatos

Para permitir que a janela de compartilhamento do Minhas Pessoas mostre seu aplicativo como um destino de compartilhamento para seus contatos, você precisa gravá-los no repositório de contatos do Windows. Para saber como escrever contatos, consulte a amostra de integração do Cartão de contato.

Para que seu aplicativo apareça como um destino de compartilhamento do Minhas Pessoas ao compartilhar com um contato, ele deve gravar uma anotação nesse contato. Anotações são partes de dados do seu aplicativo que estão associadas a um contato. A anotação deve conter a classe ativável correspondente à exibição desejada em seu membro ProviderProperties, e declarar apoio à operação Compartilhar.

Você pode anotar contatos a qualquer momento enquanto seu aplicativo estiver em execução, mas geralmente você deve anotar contatos assim que eles forem adicionados ao repositório de contatos do 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);
}

O "appId" é o Nome da Família do Pacote, seguido de "!" e o ID de classe ativável. Para localizar seu Nome da Família de Pacotes, abra Package.appxmanifest usando o editor padrão e procure na guia "Embalagem". Aqui, "Aplicativo" é a classe ativável correspondente à visualização de ShareTarget.

Executando como um destino de compartilhamento do Minhas Pessoas

Finalmente, para executar o aplicativo, substitua o método OnShareTargetActivated na classe principal do aplicativo para manipular a ativação do destino de compartilhamento. A propriedade ShareTargetActivatedEventArgs.ShareOperation.Contacts conterá o(s) contato(s) que estão sendo compartilhados ou estará vazia se essa for uma operação de compartilhamento padrão (não um compartilhamento do Minhas Pessoas).

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

Confira também