Jam*_*son 8 android mediastore android-10.0 scoped-storage
迁移到 Android 后 QI 无法再找到合适的方式来获得对文档文件夹的写入权限 ( /storage/emulated/0/Documents)
在任何人提到有关范围存储的许多其他问题之前,我已经阅读了其中的许多问题,并且根据我目前所见,所有解决方案都使用特定于应用程序的目录或仅访问媒体目录(而不是文档文件夹访问权限)。
根据我在 Android QI 中的理解,可以选择:
ACTION_OPEN_DOCUMENT_TREE我开发的应用程序用于对主题进行测试,来自测试的数据会自动存储在可公开访问的 Documents 文件夹中,有点像: /storage/emulated/0/Documents/myAppName/subjectName/testData-todaysDate.pdf
当用户想要访问测试数据时,他们将智能手机插入计算机并导航到文档文件夹,其余的就很明显了。出于这个原因,我必须使用可公开访问的存储。还想象他们想通过另一个应用程序打开手机上的测试数据,同样的交易!
所以我正在寻找的解决方案需要能够做到以下几点:
/storage/emulated/0/Documents/ACTION_OPEN_DOCUMENT_TREE我知道 Android Q 中的这些变化是为了让用户更多地“了解应用程序如何访问他们的数据”,但是一旦他们了解您的应用程序如何使用您的数据,就不会有问题。
bla*_*pps 14
仅适用于 Android Q。
String collection = "content://media/1c11-2404/file"; // One can even write to micro SD card
String relative_path = "Documents/MyFolder";
Uri collectionUri = Uri.parse(collection);
ContentValues contentValues = new ContentValues();
contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME, displayName);
contentValues.put(MediaStore.MediaColumns.MIME_TYPE, mimeType);
contentValues.put(MediaStore.MediaColumns.SIZE, filesize);
contentValues.put(MediaStore.MediaColumns.DATE_MODIFIED, modified );
contentValues.put(MediaStore.MediaColumns.RELATIVE_PATH, relative_path);
contentValues.put(MediaStore.MediaColumns.IS_PENDING, 1)
Uri fileUri = context.getContentResolver().insert(collectionUri, contentValues);
Run Code Online (Sandbox Code Playgroud)
拥有一个 uri 可以打开一个输出流来写入文件的内容。
| 归档时间: |
|
| 查看次数: |
2466 次 |
| 最近记录: |