我的代码中有一些地方,在调用需要权限的函数之前,未正确检查权限状态。因此,当我的用户遇到无保护的函数调用时,我会收到随机SecurityException
报告。
(长篇介绍,如果tl; dr,请跳到最后一段)
该代码最初是在Android Marshmallow之前编写的,它引入了按需权限。迁移时,它几乎在第一次出现时被测试了#34;基础,意味着确定了首次出现所需的许可,并在其周围包含了适当的预先检查/请求代码。
但是,一旦通过,用户可能决定撤销已经授予的权限,我的应用程序将不会遇到第一个出现代码路径。而是一个已经活跃的"将运行代码路径,导致SecurityExceptions,因为不再授予相关权限。
我显然在努力寻找受影响的代码段,因此尝试(再次)尝试通过使用lint来确定需要权限的功能。 SO上有一些帖子处理这个问题。
但是,我没有成功设置lint工具,以便它实际上识别调用需要权限的函数的代码行。我得到的只是一条确定的行,我警告我应该在checkPermisison
中打包或明确捕捉SecurityException
。
这当然是不够的,因为我知道我的应用程序需要7个不同的权限,而且我非常确定所涉及的功能也在那里(因为我必须将其中一些包装起来)。
无论如何,我猜这需要以某种方式设置。目前我除了颜色设置和代码格式设置外,还使用了几乎香草的Android Studio 3.0.1。没有触及任何代码检查。
在花了两天时间尝试使用我所有的Google-fu& amp设置lint工具好吧,我放弃写这个问题。是的,我已从清单中删除了权限。
我同时使用库和口味,如果这有任何区别的话。
您能否逐步向我提供有关lint成功识别需要权限的功能需要做什么的分步指南?
答案 0 :(得分:1)
我知道这是一个老问题,但是我有一种方法可以识别缺少权限检查的地方。
这是在项目中发现所有缺少权限错误的简便方法
我希望这会有用。