Android11:卸载后重新获得app文件夹所有权
Android 11: regain app folder ownership after uninstall
我对 Android 11 中的存储更改有疑问。如果我理解正确,应用程序可以 read/write/delete 它创建的文件。然后我还可以像这样访问这些文件:
File path = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).toString() + "/ExampleApp/" + fileName);
ExampleApp
是我在 public 下载文件夹中创建的应用程序文件夹。
但是一旦应用程序被卸载,它就会失去对其创建的所有文件的所有权。有没有办法在应用程序重新安装后重新获得 ExampleApp
文件夹的所有权?
可以使用范围存储 & ACTION_OPEN_DOCUMENT_TREE
,但是每次重新启动应用程序时都必须这样做,不是吗? app 文件夹中的文件在多个子文件夹中并且是非媒体格式,所以我无法使用 Media Store API.
使用的权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
范围存储权限:
https://developer.android.com/training/data-storage#scoped-storage
Is there a way to regain the ownership of the ExampleApp folder by the app once it gets reinstalled?
没有
One could use scoped storage & ACTION_OPEN_DOCUMENT_TREE, but that would then have to be done on every fresh start of application, no?
没有。程序员可以在 ContentResolver
上使用 takePersistableUriPermission()
来持久访问用户选择的树。
我对 Android 11 中的存储更改有疑问。如果我理解正确,应用程序可以 read/write/delete 它创建的文件。然后我还可以像这样访问这些文件:
File path = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).toString() + "/ExampleApp/" + fileName);
ExampleApp
是我在 public 下载文件夹中创建的应用程序文件夹。
但是一旦应用程序被卸载,它就会失去对其创建的所有文件的所有权。有没有办法在应用程序重新安装后重新获得 ExampleApp
文件夹的所有权?
可以使用范围存储 & ACTION_OPEN_DOCUMENT_TREE
,但是每次重新启动应用程序时都必须这样做,不是吗? app 文件夹中的文件在多个子文件夹中并且是非媒体格式,所以我无法使用 Media Store API.
使用的权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
范围存储权限:
https://developer.android.com/training/data-storage#scoped-storage
Is there a way to regain the ownership of the ExampleApp folder by the app once it gets reinstalled?
没有
One could use scoped storage & ACTION_OPEN_DOCUMENT_TREE, but that would then have to be done on every fresh start of application, no?
没有。程序员可以在 ContentResolver
上使用 takePersistableUriPermission()
来持久访问用户选择的树。