2017-06-14 24 views
2

我清理请求在其清单以下内容的应用程序的代码:
android.permission.GET_ACCOUNTS
android.permission.AUTHENTICATE_ACCOUNTS
android.permission.MANAGE_ACCOUNTS
android.permission.USE_CREDENTIALS
android.permission.INTERACT_ACROSS_USERS_FULL
什么类可能需要* _ACCOUNTS和相关权限?

问题是:当我搜索什么可能会要求这些类时,我应该寻找什么类/包导入?

我已经在搜索AccountManager - 没有匹配。有可能他们不再需要,但我想知道我可以确定的一点。

[编辑] Lint设置,以帮助找到更好。这里是我的: enter image description here

我看不到“缺少权限”选项。
如果我删除了包括所有网络,READ_PHONE_STATE和READ_EXTERNAL_STORAGE在内的所有权限,则应用程序会生成,启动,然后WifiManager.getWifiState将崩溃,并出现与ACCESS_WIFI_STATE相关的SecurityException。

[编辑2]“类型不匹配”检查已启用。 Android的Not every version使用@RequiresPermission注释。
enter image description here

我的配置:编译SDK版本23分钟14,目标22,构建工具版本25.0.1

+0

如果您只是从清单中删除权限,您应该在需要权限的地方获得一些lint警告,我猜 – lelloman

+0

@lelloman我没有看到任何信息。请参阅编辑。 – kaay

回答

1

我只是做了一个尝试,你的确应该得到一个警告,失踪的权限。其实这不是一个警告,而是一个错误。的选项是处于Settings -> Editor -> Inspections -> Android -> Constant and Resource Type Mismatches,如果你读的描述,你会看到类似

调用需要,而不必宣布 在清单

以此为2.2.3的许可权限的方法

UPDATE:

我只是检查与编译SDK 23项目,并在AccountManager的源代码,里面居然是@RequiresPermission

+0

听起来很像我需要的东西。奇数,如果它默认情况下没有打开。谢谢,我会在星期一回到这里。 – kaay

+0

好吧,我已启用它并设置为“错误”,但它从不触发,即使在需要INTERNET,CAMERA和CALL_PHONE的测试应用程序中也是如此。 我打赌缺乏@RequiresPermission注释。问题已更新。任何想法我还需要什么? – kaay

+0

嗡嗡声,它仍然听起来很奇怪,请检查[this](https://developer.android.com/studio/write/annotations.html#indirect-permissions),@RequiresPermission实际上并不需要您调用的确切方法。 – lelloman

相关问题