【问题标题】:How to find all parts in the code where permissions are needed如何找到代码中需要权限的所有部分
【发布时间】:2017-01-13 19:29:36
【问题描述】:

我有一个大型项目,其中包含许多需要权限的功能。问题是一年前开始这个项目的开发人员刚刚将所有可能的权限添加到清单中。现在的问题是我需要删除所有从未使用过的权限。有没有很好的方法或工具来做到这一点?

我想到的方法是删除所有权限,然后测试,并在看到安全异常崩溃后一一添加。堆栈跟踪还包含缺少权限的提示。我认为这不是一个好的或安全的方法......

我尝试了这里解释的方法:How to check if Android Permission is actually being used? 但它只做了部分工作。我删除了所有权限并运行检查,但未找到所有权限。我在我的代码中使用了蓝牙,并且没有注意到缺少此权限的通知...

【问题讨论】:

  • 使用 lint 运行代码检查..?
  • 谢谢您,在较新版本的 Android Studio 上尝试过,效果很好。但并未找到所有权限。我在我的代码中使用了蓝牙,并且没有注意到此权限丢失...

标签: android android-studio android-permissions


【解决方案1】:

在我的猜测中,首先查看Dangerous permission list 从清单文件中识别您的权限,并将所有这些权限列在此library 中的列表中,他们这样做的方式与处理所有权限的方式相同只看例子

askCompactPermissions(new String[]{PermissionUtils.Manifest_CAMERA, PermissionUtils.Manifest_WRITE_EXTERNAL_STORAGE}, new PermissionResult() {
        @Override
        public void permissionGranted() {
            //permission granted
            //replace with your action
        }

        @Override
        public void permissionDenied() {
            //permission denied
            //replace with your action
        }
         @Override
                public void permissionForeverDenied() {
                 // user has check 'never ask again'
                 // you need to open setting manually
                 //  Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
                 //  Uri uri = Uri.fromParts("package", getPackageName(),  
                  null);
                 //   intent.setData(uri);
                 //  startActivityForResult(intent,   
                 REQUEST_PERMISSION_SETTING); 
                }
    });

对于 Activity 范围 yourActivityClass 来自 ActivityManagePermission,如下所示

public class MainActivity extends ActivityManagePermission {

}

并且对于 Fragment 扩展 yourFragmentClass 从 FragmentManagePermission

public class FragmentHome extends FragmentManagePermission {

}

【讨论】:

  • 谢谢,但问题是代码量很大,我需要找到我应该请求哪些权限...或者,相反,我不使用哪些权限,因为就目前而言,我的应用程序在其清单中具有所有可能的权限,但我需要摆脱未使用的权限......
  • 当您查看 Dangerous Permissions 文章后,我给您的文章会从您的清单文件中识别权限并将您清单文件中的所有危险权限添加到列表中方法 askCompactPermissions(new String[]{yourpermission1, yourpermission2,....});
  • 你提供的文章非常有用,我在提问之前就阅读了它,但它没有描述我所问的解决方案......
猜你喜欢
  • 2016-04-13
  • 2011-07-24
  • 1970-01-01
  • 1970-01-01
  • 2022-08-04
  • 1970-01-01
  • 2020-02-12
  • 1970-01-01
  • 2020-05-03
相关资源
最近更新 更多