Я хочу позволить пользователю выбрать один файл в определенной папке в Android, будь то с помощью встроенного пользовательского интерфейса или сторонних файловых менеджеров.Однако я не смог сделать это на более новой версии Android с ACTION_OPEN_DOCUMENT
.Я прочитал документацию о необходимости DocumentProvider для предоставления содержимого URI, однако я очень смущен этим, поскольку нет «встроенных», и кажется, что в соответствии с документацией цель реализации такого собственного состоит в том, чтобы предоставить файл длядругие, это не то, что я хочу сделать здесь.
до того, как Android фактически запретил file://
uri, что я сделал, это использовал ACTION_GET_CONTENT и 'file: //' uri для работы с большинством стороннихфайловый менеджер приложений.Так что, если кто-то знает какие-нибудь хаки по поддержке этого после 7.0, я тоже был бы признателен за это.
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
Uri uri = Uri.parse(Environment.getExternalStorageDirectory() + "/myFolder/");
intent.setType("text/csv");
DocumentFile file = DocumentFile.fromSingleUri(getApplicationContext(), uri);
intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, file.getUri());
intent.putExtra("android.content.extra.SHOW_ADVANCED", true);
intent.putExtra("android.content.extra.FANCY", true);
intent.putExtra("android.content.extra.SHOW_FILESIZE", true);
try {
startActivityForResult(intent, 1);
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(getApplicationContext(), "Please install a File Manager.", Toast.LENGTH_SHORT).show();
}
этот код просто перейдет в папку «Недавние» вместо папки, которая у меня есть.