关于Marshmallow,如何判断Android中哪些操作系统调用需要权限检查?对于某些位置管理器调用,如果在调用之前未检查权限,则编译器将显示错误。但是,有很多其他操作系统调用需要权限,但如果在调用之前未检查权限,则不会生成编译器错误。
例如,我在我的一个应用程序中调用了位置管理器的sendExtraCommand方法。编译器在调用之前没有给出任何需要权限检查的指示,所以我没有。当我将鼠标悬停在Android Studio中的调用上时,文档窗口中的信息不会显示调用所需的权限。但是当Marshmallow用户开始使用我的应用程序时,他们就会遇到安全例外。
仅仅是我,还是Marshmallow的安全事情是非常糟糕的想法?
这里有一个类似的问题,但它没有任何好的答案,所以我创建了这个问题,希望问题能得到更多的关注: How to find required Android Marshmallow runtime permissions in code?
答案 0 :(得分:1)
如何判断Android中哪些操作系统调用需要权限检查?
如您所知,在某些情况下,您可能会收到Lint警告等。有人想象这会随着时间的推移而改善。
在其他情况下,您阅读了JavaDocs,其中类或方法提到您需要权限。将<uses-permission>
元素添加到清单时,还要考虑这是否是the dangerous
permissions that requires handling at runtime之一。
除此之外,您可以在测试应用时发现测试失败。
如果您发现这些内容不足,请将targetSdkVersion
设置为22
或更低,直到您对Android的运行时权限支持感到满意为止。