Android Найти файлы с расширением ttf
Ищу возможность получить файлы с расширением "ttf". Эти файлы уже на устройстве. Делаю запрос:
String[]pr = {MediaStore.Files.FileColumns._ID,
MediaStore.Files.FileColumns.DISPLAY_NAME};
Uri quest = MediaStore.Files.getContentUri("external");
String select = MediaStore.Files.FileColumns.MIME_TYPE+"=?";
String[]args = new String[]{"application/x-font-ttf"};
Cursor c = getContext().getContentResolver().query(quest, pr, select, args, null);
В итоге ничего не получаю, так как потом выяснилось, что такой тип не распознается, то есть свободном запросе, у тех файлов что мне нужны тип "null". Далее пытался найти нужные файлы путем перебора, но "DISPLAY_NAME" тоже возвращает "null", из-за этого отделить их по окончанию(.ttf) тоже не получается. После всего этого решил обратиться через SAF с таким запросом:
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("application/x-font-opentype");
startActivityForResult(intent, REQUEST);
Тоже ничего не получаю. Вот если тип я обозначаю как "application/octet-stream" то получаю помимо нужных файлов и другие. В общем если кто сталкивался с подобным подскажите. И да, запрос в ContentResolver MediaStore.Files.FileColumns.DATA делал, но это устаревающий метод. Зная папку, например Download с помощью File делал, и это тоже устаревающий способ. Остается DocumentFile но он медленный, да и плюс пользователю много лишних действий делать. Если есть альтернатива всему выше перечисленному буду рад.
Ответы (1 шт):
Для открытия файлов с таким расширением нужно изменить тип файлов:
application/x-font-ttf
и при открытии его передавать:
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("application/x-font-ttf");
startActivityForResult(intent,PICKFILE_RESULT_CODE);