Oreo - запретить ACTION_GET_CONTENT использовать встроенное приложение «Файлы» - PullRequest
0 голосов
/ 26 января 2019

Мое приложение считывает информацию из файла, выбранного пользователем (затем делает странные и замечательные вещи с ним!).Чтобы упростить задачу, приложение «Проводник файлов» указывает на определенный начальный каталог (в котором приложение ранее сохраняло такие файлы).

Это прекрасно работает, за исключением моего телефона Oreo (Nexus5), где встроенное приложение Google, Файлы, всегда запускается, даже при наличии альтернативных приложений для управления файлами. Файлы не отвечают URI ;следовательно, пользователь должен каждый раз переходить в каталог.Вот соответствующий код:

   Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
   Uri uri = Uri.parse(Environment.getExternalStorageDirectory().getPath()
            +  "/Documents/" + getResources().getString(R.string.app_name));
   intent.setDataAndType(uri, "text/plain");

   try {
       startActivityForResult(Intent.createChooser(intent, "Open folder"), request_code);
   }
   catch (android.content.ActivityNotFoundException ex)
   {
       Toast.makeText(this, "Please install a File Manager.",
                Toast.LENGTH_SHORT).show();
   }

Я искал решение напрасно, все напрасно.Как это можно исправить?

Параметры, которые меня интересуют:

  1. Отключение файлов
  2. Предотвращение намерения использовать файлы
  3. Разговор с файламичтобы открыть указанный каталог
  4. Принудительное использование намерения использовать другое приложение для просмотра файлов (это было бы предпочтением приложения)
  5. Любое другое решение, не предусматривающее использование средства выбора файлов.библиотека

1 Ответ

0 голосов
/ 26 января 2019

Для упрощения приложение "Проводник файлов" указывает на определенный начальный каталог (в котором приложение ранее сохраняло такие файлы).

Нет IntentДействие для этого, извините.

Это прекрасно работает, за исключением моего телефона Oreo (Nexus5)

Он не работает на сотнях миллионов устройств.ACTION_GET_CONTENT не принимает Uri.Цитируя документацию :

Обратите внимание, что в намерении не указывается URI, поскольку нет никаких ограничений на то, откуда первоначально возвращаются данные.

Также обратите внимание, что ACTION_GET_CONTENT не обязательно должен включать проводник, а на устройстве не обязательно иметь приложение для просмотра файлов.

Файлы не отвечают на URI намерения; *Реализации 1026 *

ACTION_GET_CONTENT не должны реагировать на Uri.

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

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

...