Почему не соответствуют пути? - PullRequest
0 голосов
/ 16 апреля 2019

Hy

У меня проблема, я пытаюсь сохранить файл в пользовательский каталог, но не работает.

Сначала я выбираю каталог загрузок, но копия нене работает

Если я добавлю папку каталога constans, скачает, копия работает.

Проблема в том, что путь к двум каталогам не существует.

Если я добавлю путь констант, например:

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); Путь будет: /storage/emulated/0/Download

Но если я добавлю собственный путь из намерения, и явыберите каталог для загрузки, путь к нему: com.android.providers.downloads.documents/tree/downloads

Моя функция для копирования файла:

database.close();
        File sourceDb = context.getDatabasePath("app_database");
        File destinationDb = new File(filePath + "/app_database");
        File file=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
        try {
            FileUtils.copyFile(sourceDb, destinationDb);
        } catch (Exception e) {
            return "Error";
        }

И мое намерение:

Intent i = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
                i.addCategory(Intent.CATEGORY_DEFAULT);
                startActivityForResult(Intent.createChooser(i, "Choose directory"), 100);


public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if(requestCode==100){
            informationSnackbar(data.getData().toString());
...
}

1 Ответ

0 голосов
/ 16 апреля 2019

ACTION_OPEN_DOCUMENT не возвращает File.Он возвращает Uri, указывающий на DocumentsProvider.

Для записи в документ, обозначенный Uri, используйте ContentResolver и openOutputStream(), чтобы получить OutputStream, в который можно скопироватьбаза данных.

...