syczuan
syczuan
  • 发布:2023-07-13 10:14
  • 更新:2023-08-21 11:35
  • 阅读:2123

安卓11及以上版本申请所有文件访问权限

分类:Native.js

安卓11以后,文件读写权限申请变得更严格,常见的就是读取sdcard内的公共文件都提示没有权限,以下方法用于申请所有文件访问读写权限(并非所有空间都能读写,具体查看相关文档),添加MANAGE_EXTERNAL_STORAGE权限可能导致google play审核不通过,目前一般只允许文件管理器之类主要功能依赖文件读写的应用上架。

/**  
     * 安卓11及以上版本(SDK>=30),需要申请MANAGE_EXTERNAL_STORAGE权限,否则按钮无法点击,如下  
     * 在manifest.json>app-plus>distribute>android>permissions中添加权限  
     * <uses-permission android:name=\"android.permission.MANAGE_EXTERNAL_STORAGE\"/>  
     */  
    requestPermission() {  
      const main = plus.android.runtimeMainActivity();  
      const pkName = main.getPackageName();  
      const Intent = plus.android.importClass("android.content.Intent");  
      const Build = plus.android.importClass("android.os.Build");  
      const Settings = plus.android.importClass("android.provider.Settings");  
      const Environment = plus.android.importClass("android.os.Environment");  
      if (Build.VERSION.SDK_INT >= 30) {  
        // 权限未获取跳转到设置页  
        if (!Environment.isExternalStorageManager()) {  
          let intent = new Intent(  
            Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION  
          );  
          const Uri = plus.android.importClass("android.net.Uri");  
          const uri = Uri.fromParts("package", pkName, null);  
          intent.setData(uri);  
          main.startActivity(intent);  
        }  
        // 权限已获取,自定义处理  
        else {  
        }  
      }  
    }
1 关注 分享
1***@qq.com

要回复文章请先登录注册

3***@qq.com

3***@qq.com

回复 syczuan :
嗯嗯,兄弟请教个问题, 有办法通过通话记录获取到对应的录音文件吗
2023-08-21 11:35
syczuan

syczuan (作者)

回复 3***@qq.com :
不用root,弹出确认框但打开按钮被禁用是因为MANAGE_EXTERNAL_STORAGE权限没申请,注释里有写
2023-08-15 11:34
3***@qq.com

3***@qq.com

兄弟,你这个必须要手机root之后才有用吧,这样虽然弹出了所有文件管理权限确认框,但是好像不能打开
2023-08-15 11:18