Выберите файл с определенным расширением файла xamarin.android

@vividos @jfversluis

Ожидаемое поведение

Я хочу открывать файлы с определенным фильтром расширений файлов.

Фактическое поведение

Предположим, у меня есть файл с именем abc.ext, поэтому я хочу отфильтровать все файлы с этим конкретным расширением, например ext.
В настоящее время я видел, что Android поддерживает только < strong>типы MIME, а не расширение. Это так?
Это не работает. Я использую FilePicker-Plugin-for-Xamarin-and -Windows.

var fileTypes = new string[] { "ext/*" }; 
FileData fileData = await CrossFilePicker.Current.PickFile(fileTypes);

Вот что сказал разработчик:

К сожалению, Android позволяет вам указывать только типы MIME для фильтрации выбираемых файлов (остальные выделены серым цветом и недоступны для выбора). Если вы знаете тип MIME, это хорошо, но в других случаях вам следует проверить свойство FileName и его расширение файла, если оно приемлемо.

Я хочу, чтобы другие файлы с фильтрами, отличными от .ext, были исключены.
Так есть ли обходной путь для этой проблемы, которую Android принимает только для типов MIME?
Или любой другой метод? Мои файлы в основном представляют собой двоичные и зашифрованные файлы, поэтому они могут не иметь хорошего и уникального типа MIME.
Любой альтернативный подход будет оценен.


person Sorry IwontTell    schedule 18.08.2020    source источник
comment
string[] allowTypes = {application/ext}; Файл FileData = await CrossFilePicker.Current.PickFile(allowedTypes); //попробуйте это один раз и дайте мне знать, если это работает   -  person Blu    schedule 18.08.2020
comment
Не работает братан :(, все неактивно.   -  person Sorry IwontTell    schedule 18.08.2020
comment
позвольте мне попробовать это в моем проекте еще раз, я дам вам знать   -  person Blu    schedule 18.08.2020
comment
проверьте ответ ниже, это то, что вы искали, или вам нужно что-то еще?   -  person Blu    schedule 18.08.2020


Ответы (1)


Как я сказал,

string[] allowTypes = {application/pdf};

FileData fileData = await CrossFilePicker.Current.PickFile(allowedTypes);

у меня работает нормально, и, как вы сказали, все было выделено серым цветом, потому что ваш файл расширения отсутствует в папке вашего устройства.

введите здесь описание изображения

Вы можете обратиться к изображению выше, все будет выделено серым цветом, кроме расширения формата, которое вы укажете в allowedTypes, т.е. pdf

Если вам нужна дополнительная помощь, вы можете попросить.

person Blu    schedule 18.08.2020
comment
Пожалуйста, попробуйте с пустым abc.ext. Ваш код работает для pdf, но не для ext: см. string[] allowedTypes = { "application/ext" }; и string[] allowedTypes = { "application/pdf" }; PIC1:i.ibb.co/yXJGvfz/ext.png PIC2; i.ibb.co/Q66wDVR/pdf.png - person Sorry IwontTell; 18.08.2020
comment
MIME-тип PDF — application/pdf . Принимая во внимание, что мой зашифрованный файл имеет тип MIME application/octet-stream . Но многие другие файлы также имеют тот же тип, поэтому я не могу использовать это явление. Я использовал этот htmlstrip.com/mime-file-type-checker. - person Sorry IwontTell; 18.08.2020
comment
отметьте его, чтобы мотивировать вас, поскольку проблема решена, но также просмотрите мое редактирование, которое является правильным ответом. вкусности - person Sorry IwontTell; 28.08.2020