Android11 无Root 访问data目录 实现
正文开始
关于Android11权限变化
谷歌在Android11及以上系统中采用了文件沙盒存储模式,导致第三方应用无法像以前一样访问Android/data目录,这是好事。但是我所不能理解的是已经获得"所有文件管理"权限的APP为何还是限制了,岂不是完全不留给清理、文件管理类软件后路?实在不应该!
作为普通安卓用户该如何方便快速地访问Android/data目录
众所周知,不能访问Android/data目录非常不方便,比如要管理QQ、微信接收到的文件、其他App下载的数据(如迅雷等等)。
现本人开发的应用已实现无Root访问Android/data目录(其中文件浏览器功能),并且可以方便地进行管理。
https://www.coolapk.com/apk/com.magicalstory.cleaner
软件下载
欢迎安卓手机用户下载使用 和Android开发者下载预览功能的实现。
App界面预览
开发者该如何实现无ROOT访问Data目录
1.首先,可根据需要获取所有文件管理权限:
在清单中声明:
2.动态获取读写权限,这个不用多说了吧,如果觉得麻烦可以使用郭霖大神的permissionX库
Github
关于"管理所有文件"权限
这个权限可以让你的App跟Android11以前一样,通过File API访问所有文件(除Android/data目录)
如有需要,请在清单声明不启用沙盒存储
android:preserveLegacyExternalStorage="true" android:requestLegacyExternalStorage="true"
相关判断
//判断是否需要所有文件权限 if (!(Build.VERSION.SDK_INT >= Build.VERSION_CODES.R && !Environment.isExternalStorageManager())) { //表明已经有这个权限了 }
获取权限
Intent intent = new Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_