Публикации близких людей
Внимание
Мои люди больше не поддерживаются в версиях Windows 11 и Windows 10 с применением KB5034203.
Функция "Мои люди" позволяет пользователям закреплять контакты на панели задач, что позволяет им легко оставаться в контакте из любой точки Windows, независимо от того, какое приложение они подключены. Теперь пользователи могут предоставлять доступ к содержимому с закрепленными контактами, перетаскивая файлы из проводник в закрепление "Мои люди". Они также могут предоставлять общий доступ к любым контактам в магазине контактов Windows с помощью стандартного шарма общего ресурса. Читайте, чтобы узнать, как включить приложение в качестве целевого объекта общего доступа "Мои люди".
Требования
- Windows 10 и Microsoft Visual Studio 2019. Дополнительные сведения об установке см. в статье "Настройка с помощью Visual Studio".
- Знание основ C# или схожих объектно-ориентированных языков программирования. Сведения о начале работы с C#см. в статье "Создание приложения Hello, world".
Обзор
Для включения приложения в качестве целевого объекта общего доступа "Мои люди" необходимо выполнить три шага.
- Объявите поддержку контракта активации shareTarget в манифесте приложения.
- Заметьте контакты, к которым пользователи могут предоставить общий доступ с помощью приложения.
- Поддержка нескольких экземпляров приложения, выполняющегося одновременно. Пользователи должны иметь возможность взаимодействовать с полной версией приложения, а также использовать ее для совместного использования с другими пользователями. Они могут одновременно использовать его в нескольких окнах общего доступа. Для поддержки этого приложение должно одновременно запускать несколько представлений. Чтобы узнать, как это сделать, см. статью "Показать несколько представлений для приложения".
После этого приложение будет отображаться в качестве целевого объекта общего доступа в окне общего доступа "Мои люди", которое можно запустить двумя способами:
- Контакт выбирается с помощью чудо-кнопки общего доступа.
- Файлы перетаскиваются и удаляются на контакте, закрепленном на панели задач.
Объявление поддержки контракта общей папки
Чтобы объявить поддержку приложения в качестве целевого объекта общего доступа, сначала откройте приложение в Visual Studio. В Обозреватель решений щелкните правой кнопкой мыши Package.appxmanifest и выберите "Открыть с помощью". В меню выберите редактор XML (текст) и нажмите кнопку "ОК". Затем внесите следующие изменения в манифест:
До:
<Applications>
<Application Id="MyApp"
Executable="$targetnametoken$.exe"
EntryPoint="My.App">
</Application>
</Applications>
После:
<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>
Этот код добавляет поддержку для всех файлов и форматов данных, но вы можете указать, какие типы файлов и форматы данных поддерживаются (дополнительные сведения см . в документации по классам ShareTarget).
Аннотирование контактов
Чтобы разрешить общей папке "Мои люди" отображать приложение в качестве общей папки для контактов, необходимо написать их в хранилище контактов Windows. Сведения о том, как писать контакты, см. в примере интеграции с карточками контакта.
Чтобы приложение отображалось как целевой объект общего доступа "Мои люди" при совместном доступе к контакту, он должен написать заметку в этом контакте. Заметки — это фрагменты данных из приложения, связанных с контактом. Заметка должна содержать активируемый класс, соответствующий требуемому представлению в члене ProviderProperties , и объявить поддержку операции Share .
Вы можете заметить контакты в любой момент во время работы приложения, но обычно вы должны запишите контакты, как только они будут добавлены в хранилище контактов 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);
}
AppId — это имя семейства пакетов, за которым следует "!" и идентификатор активируемых классов. Чтобы найти имя семейства пакетов, откройте Package.appxmanifest с помощью редактора по умолчанию и перейдите на вкладку "Упаковка". Здесь "App" — это активируемый класс, соответствующий представлению целевого объекта Share.
Запуск в качестве целевого объекта общего доступа "Мои люди"
Наконец, чтобы запустить приложение, переопределите метод OnShareTargetActivated в основном классе приложения для обработки целевой активации общей папки. Свойство ShareTargetActivatedEventArgs.ShareOperation.Contacts будет содержать контакты, которым предоставлен общий доступ, или будет пустым, если это стандартная операция общего доступа (а не общий ресурс "Мои люди").
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
}
}