Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este artigo explica como integrar aplicativos empacotados com o recurso Compartilhamento do Windows . Os aplicativos que são empacotados com MSIX têm identidade de 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 se registrará como um Destino de Compartilhamento para receber e lidar com arquivos compartilhados dentro do aplicativo.
O que é Share Target?
O Share Target é um recurso que foi introduzido no Windows 8 e permite que um aplicativo receba dados de outro aplicativo. O Share Target 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 manipular os argumentos de compartilhamento como ShareTargetActivatedEventArgs, que é um objeto dinâmico do aplicativo de origem. Não é um conteúdo de memória estática 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 identidade de pacote. A API retorna o código de erro se ele não estiver sendo executado com a APPMODEL_ERROR_NO_PACKAGE identidade do pacote.
Pré-requisitos
Para oferecer suporte ao ShareTargetActivatedEventArgs, o aplicativo deve ser direcionado para o Windows 10, versão 2004 (compilação 10.0.19041.0) ou posterior. Esta é a versão de destino mínima para o recurso.
Registre-se como um alvo 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 Explorador de Soluções do Visual Studio, abra o arquivo package.appxmanifest do projeto de empacotamento na sua solução e adicione a extensão de alvo de partilha.
<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 à DataFormat configuração. Neste caso, a aplicação suporta a partilha de imagens, pelo que o DataFormat está definido como Bitmap.
Obter argumentos do evento de partilha
A partir do Windows 10, versão 1809, os aplicativos empacotados podem chamar o método AppInstance.GetActivatedEventArgs para recuperar certos tipos de informações de ativação do aplicativo durante a inicialização. Por exemplo, pode chamar este método para obter informações sobre a ativação da aplicação; se foi acionada ao abrir um ficheiro, ao clicar numa notificação interativa, ou ao usar um protocolo registado.
No entanto, as informações sobre a ativação de ShareTargetActivatedEventArgs são suportadas apenas no Windows 10, versão 2004 e versões posteriores. Assim, o aplicativo deve ser direcionado para dispositivos com esta versão mínima específica.
Para ver uma implementação do Windows App SDK, consulte o método OnLaunched na aplicação de exemplo Share Target.
Para outros aplicativos empacotados, no Main método do aplicativo, verifique se há 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 de demonstração da Photo Store para obter uma implementação completa.
Manipular arquivos compartilhados
O trecho de código a seguir mostra como lidar com arquivos compartilhados em um aplicativo empacotado. O trecho 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
}
Ver também
- Visão geral da implantação do SDK de Aplicativo Windows
- Crie seu primeiro projeto WinUI 3
- Migrar da UWP para o SDK do aplicativo 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 de contrato de compartilhamento para SDK de aplicativos Windows
- Implementação de contrato de partilha para aplicações empacotadas com localização externa
- Obter informações de ativação para aplicativos empacotados
- Referência do esquema ShareTarget
Windows developer