安卓,查找代码中的所有位置以请求权限

2022-09-02 22:38:14

我正在为前棉花糖设备开发一个应用程序。源代码不是我写的,项目本身也很大。我目前正在制作应用程序以在需要时请求权限。

问题是:如何在代码中找到应该请求权限的所有位置?我正在使用Android Studio。

编辑
有些人建议将api更改为23,然后运行应用程序并查看其崩溃的位置。问题是该应用程序不会在每个地方都崩溃。

例如,在未经许可的情况下运行此代码将使应用崩溃:

TelephonyManager manager = (TelephonyManager) context
            .getSystemService(Context.TELEPHONY_SERVICE);

虽然这个只是返回一个空数组,而不是崩溃。

final String[] SELF_PROJECTION = new String[]{
    ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,};
Cursor cursor = context.getContentResolver()
    .query(ContactsContract.Profile.CONTENT_URI, SELF_PROJECTION, null, null, null);

此外,Android Lint不会显示这些地方。我不确定是否应该这样做。


答案 1

根据开发人员页面关于安全权限

但是,在几乎所有情况下,权限失败都将打印到系统日志中。

因此,运行应用程序并在日志中搜索“权限”或类似内容。

使用单元测试来确保覆盖代码中可能需要权限的所有位置。


答案 2

lintOptions {
    enable 'MissingPermission'
}

在您的 .这将在生成应用程序后显示警告。build.gradle


推荐