Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo explica como integrar aplicativos empacotados ao recurso Windows Share . Os aplicativos que são empacotados com MSIX têm a identidade do pacote e estão prontos para se registrar como um Destino de Compartilhamento. O recurso Compartilhar permite que os usuários compartilhem conteúdo de um aplicativo para outro. Um aplicativo empacotado será registrado como um Destino de Compartilhamento para receber e manipular arquivos compartilhados dentro do aplicativo.
O que é o Destino do compartilhamento?
Compartilhamento de Destino é um recurso que foi introduzido no Windows 8 e permite que um aplicativo receba dados de outro aplicativo. O Destino do compartilhamento funciona como uma Área de Transferência, mas com conteúdo dinâmico.
Para que o registro de destino de compartilhamento padrão funcione com aplicativos Win32, o aplicativo precisa ter uma identidade de pacote e também lidar com os argumentos de compartilhamento como ShareTargetActivatedEventArgs, que é um objeto dinâmico do aplicativo de origem. Não é um conteúdo de memória estático que é enviado para o aplicativo de destino.
Observação
Em um aplicativo C++, use a API GetCurrentPackageFullName para verificar se o aplicativo em execução tem a identidade do pacote. A API retornará o APPMODEL_ERROR_NO_PACKAGE código de erro se ele não estiver em execução com a identidade do pacote.
Pré-requisitos
Para dar suporte ShareTargetActivatedEventArgs, o aplicativo deve ter como destino o Windows 10, versão 2004 (build 10.0.19041.0) ou posterior. Esta é a versão de destino mínima para o recurso.
Registrar-se como um destino de compartilhamento
Há duas etapas necessárias para implementar o contrato de compartilhamento em seu aplicativo.
Adicionar uma extensão de destino de compartilhamento ao appxmanifest
No Gerenciador de Soluções do Visual Studio, abra o arquivo package.appxmanifest do projeto de empacotamento em sua solução e adicione a extensão de alvo de compartilhamento.
<Extensions>
<uap:Extension
Category="windows.shareTarget">
<uap:ShareTarget>
<uap:SupportedFileTypes>
<uap:SupportsAnyFileType />
</uap:SupportedFileTypes>
<uap:DataFormat>Bitmap</uap:DataFormat>
</uap:ShareTarget>
</uap:Extension>
</Extensions>
Adicione o formato de dados suportado pelo seu aplicativo à configuração DataFormat. Nesse caso, o aplicativo dá suporte ao compartilhamento de imagens, portanto, ele DataFormat é definido como Bitmap.
Buscar argumentos do evento de compartilhamento
A partir do Windows 10, versão 1809, os aplicativos empacotados podem chamar o método AppInstance.GetActivatedEventArgs para recuperar determinados tipos de informações de ativação do aplicativo durante a inicialização. Por exemplo, você pode chamar esse método para obter informações sobre a ativação do aplicativo; se ela foi acionada ao abrir um arquivo, clicar em uma notificação interativa ou usar um protocolo registrado.
Contudo, as informações de ativação do ShareTargetActivatedEventArgs têm suporte apenas no Windows 10, versão 2004 e posteriores. Portanto, o aplicativo deve ser direcionado para dispositivos com essa versão mínima específica.
Para ver uma implementação do SDK de Aplicativo do Windows, consulte o OnLaunched método no aplicativo de exemplo do Share Target.
Para outros aplicativos empacotados, no método Main do aplicativo, verifique se AppInstance.GetActivatedEventArgs.
public static void Main(string[] cmdArgs)
{
...
if (isRunningWithIdentity())
{
var activationArgs = AppInstance.GetActivatedEventArgs();
if (activationArgs != null)
{
switch (activationArgs.Kind)
{
case ActivationKind.Launch:
HandleLaunch(activationArgs as LaunchActivatedEventArgs);
break;
case ActivationKind.ToastNotification:
HandleToastNotification(activationArgs as ToastNotificationActivatedEventArgs);
break;
case ActivationKind.ShareTarget:
HandleShareAsync(activationArgs as ShareTargetActivatedEventArgs);
break;
default:
HandleLaunch(null);
break;
}
}
}
}
Consulte o aplicativo Loja de Fotos Demo para obter uma implementação completa.
Manipular arquivos compartilhados
O snippet de código a seguir mostra como lidar com arquivos compartilhados em um aplicativo empacotado. O snippet de código faz parte do HandleShareAsync método que é chamado quando o aplicativo é ativado como um destino de compartilhamento no exemplo anterior.
static async void HandleShareAsync(ShareTargetActivatedEventArgs args)
{
ShareOperation shareOperation = args.ShareOperation;
shareOperation.ReportStarted();
if (shareOperation.Data.Contains(
Windows.ApplicationModel.DataTransfer.StandardDataFormats.StorageItems))
{
try
{
IReadOnlyList<IStorageItem> items = await shareOperation.Data.GetStorageItemsAsync();
var file = (IStorageFile)items[0];
string path = file.Path;
var image = new ImageFile(path);
image.AddToCache();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
shareOperation.ReportCompleted();
// app launch code
}
Consulte também
- Visão geral da implantação do SDK do Aplicativo windows
- Criar seu primeiro projeto WinUI 3
- Migrar da UWP para o SDK de Aplicativos Windows
- Vantagens e desvantagens de empacotar um aplicativo – Visão geral da implantação
- Identidade, registro e ativação de aplicativos Win32 não empacotados
- Implementação do contrato de compartilhamento para o SDK do Aplicativo do Windows
- Compartilhar a implementação do contrato para os aplicativos empacotados com localização externa
- Obter informações de ativação para aplicativos empacotados
- Referência de esquema do ShareTarget
Windows developer