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 о том, как указать типы файлов на других платформах. Недавно проект получил обновление, так что попробуйте.

Другие вопросы по тегам