首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android 13上的异常许可请求行为

Android 13上的异常许可请求行为
EN

Stack Overflow用户
提问于 2022-06-19 17:09:17
回答 1查看 1.4K关注 0票数 2

我有一个方法,以便在需要时显示请求权限。

代码语言:javascript
复制
   static boolean requestPermission(int id, String... permissions) {
            System.out.println("REQUEST PERMISSION METHOD");
            boolean granted = true;
            ArrayList<String> list = new ArrayList<>();
            
            for (String s : permissions) {
                int check = ContextCompat.checkSelfPermission(this, s);
                boolean hasPermission = (check == PackageManager.PERMISSION_GRANTED);
                granted &= hasPermission;
                if (!hasPermission) {
                    list.add(s);
                }
            }

            if (granted) {
                return true;
            } else {
                ActivityCompat.requestPermissions(this, permissionsNeeded.toArray(new String[permissionsNeeded.size()]), id);
                return false;
            }
        }

这个方法直到Android 13才开始工作,我正在使用Android中最新的官方Android仿真器进行测试,现在如果我调用了onResume()

代码语言:javascript
复制
    requestPermission(id,
                    Manifest.permission.READ_EXTERNAL_STORAGE,
                    Manifest.permission.WRITE_EXTERNAL_STORAGE));

我有一个不确定请求的循环:我没有任何崩溃,但是在日志cat中,我继续"REQUEST PERMISSION METHOD"打印,将字符串打印放在方法的开头,就好像方法被持续地调用一样。

为什么要这样?我该如何解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-19 22:03:40

造成这个问题的原因是,如果针对较新的安卓版本,您尝试获取的Manifest.permission.*常量不再有效。这会给您的

代码语言:javascript
复制
ActivityCompat.requestPermissions(...)

因此,用适当的API级别检查或针对一个较低的android版本来包装请求,直到应用程序正确迁移到SAF (因此您不需要直接存储访问和相关权限)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72678848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档