Как создать каталог типа sdcard / MyName в Android 10 и next

#java #android

#java #Android

Вопрос:

Проблема — у меня есть приложение, которое генерирует файлы GPX. Они могут храниться в «файлах» приложения и использоваться совместно по запросу пользователя. НО некоторые пользователи хотели бы поделиться (синхронизировать) напрямую — весь каталог. Таким образом, они обмениваются фотографиями и не только… Моя цель — создать каталог, а затем сохранить файлы, если пользователь этого захочет. Каталог типа:
sdcard / MyName/
, который будет содержать файлы GPX для прямого доступа пользователей. android:requestLegacyExternalStorage=»true» — не вариант. У меня есть время, чтобы должным образом модифицировать приложение, готовое для Android 11 и next …
Наследие в какой-то момент будет отменено…. Когда я использую приведенный ниже код, меня отправляют на загрузку:

 public void openDirectory() {
        String path=Environment.getExternalStorageDirectory().getPath();
        path =File.separator "Downloads" File.separator "MyName" File.separator;
        Log.e("OD",path);
        Uri uri = Uri.parse(path);
        Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
        intent.addFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
        intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, uri);
        startActivityForResult(intent, SelDir);
    }
  

Я также пробовал :

         File dir=new File(path);
        Uri ui=FileProvider.getUriForFile(this, BuildConfig.APPLICATION_ID   ".provider",dir);
  

И ошибка:
Не удалось найти настроенный корень, содержащий /storage/emulated/0/Downloads/MyName
В filepaths.xml — путь=».»

Я перепробовал множество путей — например, MyName, Downloads / MyName ….

Комментарии:

1. Legacy in some moment will be canceled.. Что вы имеете в виду? Даже если вы нацелены на 30, он будет работать на устройстве Android 10. Просто используйте его. Для Android 11 все снова намного проще, так как у вас есть доступ на запись ко всем общедоступным папкам в корневом каталоге внешнего хранилища.