Android Studio 3.0 lint没有找到丢失的权限

时间:2018-01-25 16:43:36

标签: android android-permissions android-studio-3.0 android-lint

我的代码中有一些地方,在调用需要权限的函数之前,未正确检查权限状态。因此,当我的用户遇到无保护的函数调用时,我会收到随机SecurityException报告。

(长篇介绍,如果tl; dr,请跳到最后一段)

该代码最初是在Android Marshmallow之前编写的,它引入了按需权限。迁移时,它几乎在第一次出现时被测试了#34;基础,意味着确定了首次出现所需的许可,并在其周围包含了适当的预先检查/请求代码。

但是,一旦通过,用户可能决定撤销已经授予的权限,我的应用程序将不会遇到第一个出现代码路径。而是一个已经活跃的"将运行代码路径,导致SecurityExceptions,因为不再授予相关权限。

我显然在努力寻找受影响的代码段,因此尝试(再次)尝试通过使用lint来确定需要权限的功能。 SO上有一些帖子处理这个问题。

但是,我没有成功设置lint工具,以便它实际上识别调用需要权限的函数的代码行。我得到的只是一条确定的行,我警告我应该在checkPermisison中打包或明确捕捉SecurityException

这当然是不够的,因为我知道我的应用程序需要7个不同的权限,而且我非常确定所涉及的功能也在那里(因为我必须将其中一些包装起来)。

无论如何,我猜这需要以某种方式设置。目前我除了颜色设置和代码格式设置外,还使用了几乎香草的Android Studio 3.0.1。没有触及任何代码检查。

在花了两天时间尝试使用我所有的Google-fu& amp设置lint工具好吧,我放弃写这个问题。是的,我已从清单中删除了权限。

我同时使用库和口味,如果这有任何区别的话。

您能否逐步向我提供有关lint成功识别需要权限的功能需要做什么的分步指南?

1 个答案:

答案 0 :(得分:1)

我知道这是一个老问题,但是我有一种方法可以识别缺少权限检查的地方。

  1. 在Android Studio的项目标签中,将视图用作项目
  2. 右键单击包含所有Java代码的文件夹

right click

  1. 转到分析>检查代码
  2. 将出现一个“指定检查范围” 对话框,在这里您可以选择AS将检查缺少权限的目录,在这种情况下,由于我们之前选择了该文件夹,默认情况下该范围将是我们以前的文件夹文件夹,点击确定
  3. AS将开始在您的代码中搜索错误,警告等,具体取决于您的项目大小,这是AS进行扫描所需的时间。
  4. 完成后,您会看到错误,警告等列表,您需要转到 Android Lint:正确性>缺少权限

result

这是在项目中发现所有缺少权限错误的简便方法

我希望这会有用。