【发布时间】:2021-12-29 01:49:00
【问题描述】:
我正在开发一个将数据保存到数据库中的应用程序,我正在尝试备份和恢复我能够执行的数据库,我的问题是 API30+ 上的“不祥”权限弹出窗口
Allow this app to access modify and delete files on your device.....
是否允许此应用访问、修改和删除设备或任何连接的存储设备上的文件?此应用可能会在不询问您的情况下访问文件。
我不想做任何这些事情,我只是想要获得执行备份/恢复事情的权限
这是我请求权限的代码:
private void requestStoragePermissionExport(){
if( (Build.VERSION.SDK_INT >= 30 )){
try {
Intent intent = new Intent(Manifest.permission.MANAGE_EXTERNAL_STORAGE);
intent.addCategory("android.intent.category.DEFAULT");
intent.setData(Uri.parse(String.format("package:%s",getApplicationContext().getPackageName())));
startActivityForResult(intent, 2296);
} catch (Exception e) {
Intent intent = new Intent();
intent.setAction(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION);
startActivityForResult(intent, 2296);
}
}else{
ActivityCompat.requestPermissions(this, new String[]{
Manifest.permission.WRITE_EXTERNAL_STORAGE}, BACKUP_CODE);
}
}
有没有更好的方法来处理这个问题?
【问题讨论】:
-
为什么需要该权限来备份数据库? db 是您空间中的文件,您不需要任何权限即可访问它。
-
也许您可以选择共享数据库?使用 Android Sharesheet 并允许您的用户将文件导出到外部。
-
@FilipPetrovski 所以如果他们的用户自己导出/导入权限就不需要了吗?
标签: java android android-studio android-permissions android-api-30