首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android,查找代码中请求权限的所有位置

Android,查找代码中请求权限的所有位置
EN

Stack Overflow用户
提问于 2016-02-20 03:57:26
回答 5查看 2.5K关注 0票数 18

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

问题是:如何找到代码中应该请求权限的所有位置?我使用的是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不会显示这些地方。我不确定是否应该这样。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-02-22 22:59:37

根据关于security permissions的开发人员页面:

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

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

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

票数 5
EN

Stack Overflow用户

发布于 2016-02-24 20:47:19

添加

lintOptions {
    enable 'MissingPermission'
}

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

票数 2
EN

Stack Overflow用户

发布于 2016-02-22 22:35:40

当然,编译目标api 23,不要添加权限代码,运行应用程序并查看它在哪里崩溃。

一旦你开始精确定位位置,然后翻转权限(通过应用程序设置),这样你就可以越过那个屏幕,然后关闭它们,这样你就可以看到它是否崩溃。

Logcat非常具有描述性,它让你知道权限被拒绝了……

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

https://stackoverflow.com/questions/35513879

复制
相关文章

相似问题

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