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 шт):

Автор решения: Andrew

Для открытия файлов с таким расширением нужно изменить тип файлов:

application/x-font-ttf

и при открытии его передавать:

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("application/x-font-ttf");
startActivityForResult(intent,PICKFILE_RESULT_CODE);

Так же вот есть вопросы по данной тематике: 1, 2 и 3.

→ Ссылка