Uso compartido de Mis allegados
Importante
Mis Allegados ya no se admite en versiones de Windows 11 y Windows 10 con la actualización KB5034203.
La característica Mis allegados permite a los usuarios anclar contactos a la barra de tareas, lo que les facilita el contacto desde cualquier espacio de Windows, independientemente de la aplicación a la que estén conectados. Ahora los usuarios pueden compartir contenido con sus contactos anclados arrastrando archivos del Explorador de archivos al elemento anclado de Mis allegados. También podrán compartir con cualquier contacto del almacén de contactos de Windows a través del acceso compartido estándar. Siga leyendo para saber cómo activar la aplicación como destino de uso compartido de Mis allegados.
Requisitos
- Windows 10 y Microsoft Visual Studio 2019. Para obtener más información sobre la instalación, consulte Configuración con Visual Studio.
- Conocimientos básicos de C# o algún lenguaje similar de programación orientado a objetos. Para empezar a trabajar con C#, consulte Crear una aplicación "Hola, mundo".
Información general
Son tres los pasos que debe seguir para habilitar la aplicación como destino de uso compartido de Mis allegados:
- Declare la compatibilidad con el contrato de activación de shareTarget en el manifiesto de la aplicación.
- Anote los contactos con los que los usuarios pueden compartir a través de la aplicación.
- Admita varias instancias de la aplicación que se ejecutan al mismo tiempo. Los usuarios deben poder interactuar con la versión completa de la aplicación mientras la usan para compartir con otros usuarios. Es posible usarla en varias ventanas de recursos compartidos a la vez. Para que esto funcione, la aplicación debe poder ejecutar varias vistas simultáneamente. Para obtener información sobre cómo hacerlo, consulte el artículo Mostrar varias vistas en una aplicación.
Una vez hecho esto, la aplicación aparecerá como destino de recurso compartido en la ventana de uso compartido de Mis allegados, que se puede iniciar de dos maneras:
- Se elige un contacto a través del acceso compartido.
- Los archivos se arrastran y colocan en un contacto anclado a la barra de tareas.
Declaración de compatibilidad para el contrato de uso compartido
Para declarar la compatibilidad con la aplicación como destino de uso compartido, abra primero la aplicación en Visual Studio. En el Explorador de soluciones, haga clic con el botón derecho en Package.appxmanifest y seleccione Abrir con. En el menú, seleccione Editor de XML (texto) y haga clic en Aceptar. A continuación, realice los siguientes cambios en el manifiesto:
Antes
<Applications>
<Application Id="MyApp"
Executable="$targetnametoken$.exe"
EntryPoint="My.App">
</Application>
</Applications>
Despué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>
Este código añade funciones de compatibilidad con todos los archivos y formatos de datos, pero se puede indicar qué tipos de archivos y formatos de datos se admiten (consulte la documentación sobre la clase ShareTarget para conocer más detalles).
Anotación de contactos
Para que en la ventana de uso compartido de Mis allegados aparezca la aplicación como destino de uso compartido para los contactos, debe escribirlos en el almacén de contactos de Windows. Para obtener información sobre cómo escribir contactos, consulte el ejemplo de integración de tarjeta de contacto.
Para que la aplicación aparezca como destino de uso compartido de Mis allegados al compartir con un contacto, debe escribir una anotación en dicho contacto. Las anotaciones son fragmentos de datos de la aplicación que están asociados a un contacto. La anotación debe incluir la clase activable correspondiente en el modo de vista deseado en el miembro ProviderProperties y declarar la compatibilidad en la operación Share.
Puede anotar los contactos en cualquier momento mientras se ejecuta la aplicación, pero por lo general tendrá que anotar los contactos tan pronto como se añadan al almacén de contactos de 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);
}
El "appId" es el nombre de la familia del paquete, seguido de '!' y el ID de clase activable. Para buscar el nombre de familia del paquete, abra Package.appxmanifest con el editor predeterminado y busque en la pestaña "Packaging" ("Empaquetado"). Aquí, "App" es la clase activable correspondiente en el modo de vista Destino de uso compartido.
Ejecutar como destino de uso compartido de Mis allegados
Por último, para ejecutar la aplicación, invalide el método OnShareTargetActivated en la clase principal de la aplicación para controlar la activación como destino de uso compartido. La propiedad ShareTargetActivatedEventArgs.ShareOperation.Contacts incluirá los contactos con los que se va a compartir o estará vacía si se trata de una operación de uso compartido estándar (no de uso compartido de Mis allegados).
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
}
}