Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se explica cómo integrar aplicaciones empaquetadas con la característica Windows Share . Las aplicaciones empaquetadas con MSIX tienen identidad de paquete y están listas para registrarse como destino de recurso compartido. La característica Compartir permite a los usuarios compartir contenido de una aplicación a otra. Una aplicación empaquetada se registrará como destino de recurso compartido para recibir y controlar archivos compartidos dentro de la aplicación.
¿Qué es Compartir destino?
Share Target es una característica que se introdujo en Windows 8 y permite que una aplicación reciba datos de otra aplicación. Share Target funciona como un Portapapeles, pero con contenido dinámico.
Para que el registro de destino de recurso compartido predeterminado funcione con aplicaciones Win32, la aplicación debe tener una identidad de paquete y también controlar los argumentos de recurso compartido como ShareTargetActivatedEventArgs, que es un objeto activo de la aplicación de origen. No es un contenido de memoria estático que se envía a la aplicación de destino.
Nota:
En una aplicación de C++, use la API GetCurrentPackageFullName para comprobar si la aplicación en ejecución tiene la identidad del paquete. La API devuelve el APPMODEL_ERROR_NO_PACKAGE código de error si no se ejecuta con la identidad del paquete.
Prerrequisitos
Para admitir ShareTargetActivatedEventArgs, la aplicación debe tener como destino Windows 10, versión 2004 (compilación 10.0.19041.0) o posterior. Esta es la versión de destino mínima para la característica.
Registrarse como Compartir destino
Hay dos pasos necesarios para implementar el contrato de uso compartido en la aplicación.
Agregar una extensión de destino de uso compartido a appxmanifest
En el Explorador de soluciones de Visual Studio, abra el archivo package.appxmanifest del proyecto Empaquetado de la solución y agregue la extensión Compartir destino.
<Extensions>
<uap:Extension
Category="windows.shareTarget">
<uap:ShareTarget>
<uap:SupportedFileTypes>
<uap:SupportsAnyFileType />
</uap:SupportedFileTypes>
<uap:DataFormat>Bitmap</uap:DataFormat>
</uap:ShareTarget>
</uap:Extension>
</Extensions>
Agregue el formato de datos admitido que admite la aplicación a la DataFormat configuración. En este caso, la aplicación admite compartir imágenes, por lo que DataFormat se establece en Bitmap.
Captura de argumentos de Compartir evento
A partir de Windows 10, versión 1809, las aplicaciones empaquetadas pueden llamar al método AppInstance.GetActivatedEventArgs para recuperar determinados tipos de información de activación de la aplicación durante el inicio. Por ejemplo, puede llamar a este método para obtener información sobre la activación de la aplicación; si se desencadenó abriendo un archivo, haciendo clic en un toast interactivo o usando un protocolo registrado.
Sin embargo, la información de activación de ShareTargetActivatedEventArgs solo se admite en Windows 10, versión 2004 y versiones posteriores. Por lo tanto, la aplicación debe dirigirse a los dispositivos con esta versión mínima específica.
Para ver una implementación de Windows App SDK, consulte el OnLaunched método en la aplicación de ejemplo Share Target.
En el caso de otras aplicaciones empaquetadas, en el método Main de la aplicación, compruebe 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;
}
}
}
}
Ve la aplicación Tienda de Fotos Demo para una implementación completa.
Control de archivos compartidos
El siguiente fragmento de código muestra cómo controlar los archivos compartidos en una aplicación empaquetada. El fragmento de código forma parte del HandleShareAsync método al que se llama cuando la aplicación se activa como destino compartido en el ejemplo 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 también
- Introducción a la implementación de Windows App SDK
- Creación del primer proyecto de WinUI 3
- Migrar de UWP a Windows App SDK
- Ventajas y desventajas del empaquetado de una aplicación: introducción a la implementación
- Identidad, registro y activación de aplicaciones Win32 no empaquetadas
- Implementación del contrato de recurso compartido para el SDK de aplicaciones de Windows
- Implementación de contratos compartidos para aplicaciones empaquetadas con ubicación externa
- Obtener información de activación para aplicaciones empaquetadas
- Referencia del esquema de ShareTarget