【问题标题】:What classes may require *_ACCOUNTS, and related permissions?哪些类可能需要 *_ACCOUNTS 和相关权限?
【发布时间】:2017-06-14 12:56:41
【问题描述】:

我正在清理在其清单中请求以下内容的应用的代码:
android.permission.GET_ACCOUNTS
android.permission.AUTHENTICATE_ACCOUNTS
android.permission.MANAGE_ACCOUNTS
android.permission.USE_CREDENTIALS
android.permission.INTERACT_ACROSS_USERS_FULL

问题是:在搜索可能需要这些的内容时,我应该寻找哪些类/包导入?

我已经搜索过 AccountManager - 没有命中。可能不再需要它们,但我想知道我可以确定的点。

[EDIT] 有助于发现这一点的 Lint 设置会更好。这是我的:

我没有看到“缺少权限”选项。
如果我删除所有权限(包括所有网络、READ_PHONE_STATE 和 READ_EXTERNAL_STORAGE)、应用程序构建、启动,然后 WifiManager.getWifiState 崩溃并出现与 ACCESS_WIFI_STATE 相关的 SecurityException。

[EDIT2]“类型不匹配”检查已启用。 Android 的Not every version 使用了@RequiresPermission 注解。

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

【问题讨论】:

  • 如果你只是从清单中删除权限,你应该会在需要权限的地方收到一些 lint 警告,我猜
  • @lelloman 我没有看到。见编辑。

标签: android user-accounts


【解决方案1】:

我刚刚试了一下,您确实应该收到缺少权限的警告。实际上,这甚至不是警告,而是错误。选项在Settings -> Editor -> Inspections -> Android -> Constant and Resource Type Mismatches,如果你阅读描述你会看到类似

在没有声明的情况下调用需要权限的方法 清单中的权限

这在 AS 2.2.3 上

更新:

我刚刚检查了一个带有compile sdk 23的项目,并且在AccountManager的源代码中实际上有@RequiresPermission

【讨论】:

  • 听起来正是我所需要的。如果默认情况下未启用,则为奇数。谢谢,我会在星期一回复这个问题。
  • 好的,我已启用它并将其设置为“错误”,但它永远不会触发,即使在需要 INTERNET、CAMERA 和 CALL_PHONE 的测试应用程序上也是如此。我打赌缺少 @RequiresPermission 注释。问题已更新。知道我还需要什么吗?
  • 嗯,这听起来还是很奇怪,检查this,@RequiresPermission 对于您调用的确切方法实际上不是必需的。
猜你喜欢
  • 2014-08-28
  • 2015-12-28
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 2020-04-06
  • 2016-07-15
  • 2012-03-11
相关资源
最近更新 更多