В этой статье описывается, как использовать интерфейс многоплатформенного приложения .NET (.NET MAUI). IShare Этот интерфейс предоставляет API для отправки данных, таких как текстовые или веб-ссылки, в функцию общего доступа устройств.
Реализация интерфейса по умолчанию IShare доступна через Share.Default свойство. Интерфейс IShare и Share класс содержатся в Microsoft.Maui.ApplicationModel.DataTransfer пространстве имен.
При выполнении запроса на общий доступ устройство отображает окно общего доступа, предлагая пользователю выбрать приложение для общего доступа:
Начать
Для доступа к функциональным возможностям Общего доступа требуется следующая настройка для конкретной платформы:
Если ваше приложение будет совместно использовать файлы мультимедиа, такие как фотографии и видео, необходимо добавить следующие ключи в файлы Platform/iOS/Info.plist и Platform/MacCatalyst/Info.plist :
<key>NSPhotoLibraryAddUsageDescription</key>
<string>This app needs access to the photo gallery to save photos and videos.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>This app needs access to the photo gallery to save photos and videos.</string>
Элементы <string> представляют текст, отображаемый пользователям при запросе разрешения. Убедитесь, что текст изменен на что-то конкретное для приложения.
Никакой настройки для этого не требуется.
Общий доступ к тексту и ссылкам
Функциональные возможности общего доступа работают путем вызова RequestAsync метода с полезными данными, которые содержат сведения для совместного использования другим приложениям. ShareTextRequest.Text и ShareTextRequest.Uri может быть смешанным, и каждая платформа будет обрабатывать фильтрацию на основе содержимого.
public async Task ShareText(string text)
{
await Share.Default.RequestAsync(new ShareTextRequest
{
Text = text,
Title = "Share Text"
});
}
public async Task ShareUri(string uri, IShare share)
{
await share.RequestAsync(new ShareTextRequest
{
Uri = uri,
Title = "Share Web Link"
});
}
Общий доступ к файлу
Вы также можете предоставлять общий доступ к файлам другим приложениям на устройстве. .NET MAUI автоматически обнаруживает тип файла (MIME) и запрашивает общий ресурс. Однако операционные системы могут ограничить общий доступ к типам файлов. Чтобы предоставить общий доступ к одному файлу ShareFileRequest , используйте тип.
В следующем примере кода записывается текстовый файл на устройство, а затем запрашивается общий доступ к нему:
public async Task ShareFile()
{
string fn = "Attachment.txt";
string file = Path.Combine(FileSystem.CacheDirectory, fn);
File.WriteAllText(file, "Hello World");
await Share.Default.RequestAsync(new ShareFileRequest
{
Title = "Share text file",
File = new ShareFile(file)
});
}
Общий доступ к нескольким файлам
Общий доступ к нескольким файлам немного отличается от общего доступа к одному файлу. Чтобы предоставить общий доступ к одному файлу ShareMultipleFilesRequest , используйте тип.
В следующем примере кода на устройство записывается два текстовых файла, а затем запрашивается общий доступ к ним:
public async Task ShareMultipleFiles()
{
string file1 = Path.Combine(FileSystem.CacheDirectory, "Attachment1.txt");
string file2 = Path.Combine(FileSystem.CacheDirectory, "Attachment2.txt");
File.WriteAllText(file1, "Content 1");
File.WriteAllText(file2, "Content 2");
await Share.Default.RequestAsync(new ShareMultipleFilesRequest
{
Title = "Share multiple files",
Files = new List<ShareFile> { new ShareFile(file1), new ShareFile(file2) }
});
}
Расположение презентации
Важно!
Этот раздел относится только к iPadOS.
При запросе общего ресурса или открытия средства запуска на iPadOS его можно представить во всплывающем ведении. Это указывает, где появится всплывающее окно и наведите стрелку непосредственно на нее. В этом расположении обычно указывается элемент управления, который инициировал действие. Расположение можно указать с помощью свойства PresentationSourceBounds:
await Share.RequestAsync(new ShareFileRequest
{
Title = Title,
File = new ShareFile(file),
PresentationSourceBounds = DeviceInfo.Platform == DevicePlatform.iOS && DeviceInfo.Idiom == DeviceIdiom.Tablet
? new Rect(0, 20, 0, 0)
: Rect.Zero
});
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Отзыв о .NET MAUI
.NET MAUI — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв:
Присоединитесь к серии встреч для создания масштабируемых решений искусственного интеллекта на основе реальных вариантов использования с другими разработчиками и экспертами.
Узнайте, как использовать статические и динамические общие ресурсы для создания пользовательского интерфейса многоплатформенного пользовательского интерфейса приложений .NET (MAUI). А также о том, как стили могут сделать пользовательский интерфейс более согласованным и доступным.