Android如何查找代码中的所有地方以请求权限?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (45)

有些人建议将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);
提问于
用户回答回答于

根据有关安全权限的开发者页面:

然而,在几乎所有情况下,权限失败都会打印到系统日志中。

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

用户回答回答于

加这一行:

lintOptions {
    enable 'MissingPermission'
}

在你的build.gradle。这会在您构建应用程序后显示警告。

扫码关注云+社区