Xamarin - Android: есть ли средство выбора файлов, позволяющее отфильтровать формат
В интернете есть хороший инструмент выбора файлов, но я не вижу способа настроить, какое расширение файлов может отображаться.
Я пробую эти два пакета Compass File Picker и FilePicker-Plugin-for-Xamarin-and-Windows, который является кроссплатформенным. Ничего из этого я не могу найти, чтобы отфильтровать файл и показать только определенный тип файлов.
3 ответа
private void Button1_Click(object sender, System.EventArgs e)
{
Intent = new Intent();
Intent.SetType("image/*");
Intent.SetType("pdf/*");
Intent.SetAction(Intent.ActionGetContent);
StartActivityForResult(Intent.CreateChooser(Intent, "Select a File"),PickImageId);
//CreateChooser(Intent, "Select Picture"), PickImageId);
}
Это для выбора изображения из галереи dvice и способа установки расширения. И имейте в виду, если уровень API устройства ниже 20, вам может понадобиться установить и любой файловый менеджер.
Я нашел в Интернете, но не вижу способа настроить, какое расширение файлов может отображаться.
я проверил FilePicker-Plugin-for-Xamarin-and-Windows
Исходные коды, тип файла этого плагина жестко intent.SetType("*/*");
, Поэтому невозможно использовать этот плагин для фильтрации типов файлов.
Но вы можете создать свой собственный File Picker для фильтрации нужной папки и расширения файла:
private void PickFile(string folder, string extension)
{
Intent intent = new Intent(Intent.ActionGetContent);
intent.SetType(folder+"/"+extension);
intent.AddCategory(Intent.CategoryOpenable);
try
{
StartActivityForResult(Intent.CreateChooser(intent, "Select a file"),
0);
}
catch (System.Exception exAct)
{
System.Diagnostics.Debug.Write(exAct);
}
}
И переопределив OnActivityResult, вы получите результат выбора файла.
Есть несколько вилок плагина FilePicker Xamarin, и есть только один, который также поддерживает указание типов файлов независимо от платформы: https://github.com/jfversluis/FilePicker-Plugin-for-Xamarin-and-Windows(примечание: Я один из авторов проекта).
README.md объясняет, что на Android вы можете передавать MIME-типы того, что вы хотите выбрать. Фактическая программа выбора файлов выделяет файлы, которые не соответствуют указанным типам MIME. Вы можете проверить пример проекта Forms о том, как указать типы файлов на других платформах. Недавно проект получил обновление, так что попробуйте.