【问题标题】:ACCOUNT_MANAGER - "Permission is only granted to system apps"ACCOUNT_MANAGER - “权限只授予系统应用”
【发布时间】:2018-03-31 03:12:46
【问题描述】:

我正在按照here at android developer 的说明进行操作。这些说明说要将这两行代码添加到清单中:

<manifest ... >
    <uses-permission android:name="android.permission.ACCOUNT_MANAGER" />
    <uses-permission android:name="android.permission.INTERNET" />
    ...
</manifest>

问题是我现在在“ACCOUNT_MANAGER”行收到一条错误消息,提示“仅向系统应用授予权限”。

我的应用程序不是系统应用程序,我需要对 OAuth2 服务进行身份验证。任何使用 OAuth2 的应用程序怎么可能需要成为系统应用程序?

有谁知道如何在不要求我的应用程序成为“系统应用程序”的情况下使用 ACCOUNT_MANAGER?

我看过this questionthis question。他们说,对于他们列出的权限,错误是“假”错误消息。有谁知道'ACCOUNT_MANAGER 错误是否是假消息?我可以告诉编译器像其他帖子中的建议一样忽略这一点吗?

【问题讨论】:

  • 在新版本的 android 中使用 ContextCompat.checkSelfPermission 。试试看
  • 你能告诉我们你需要什么 OAuth2 吗?大多数情况下,如果您需要使用 Google Sign In API 之类的东西来验证来自现有帐户的用户

标签: android android-studio


【解决方案1】:

来自documentation

字符串 ACCOUNT_MANAGER

允许应用程序调用 AccountAuthenticators。

不适用于第三方应用程序。

ACCOUNT_MANAGER 权限只能授予系统应用

如果你的应用需要 AccountManager,你可以像 tutorial 这样创建一个 AccountAuthenticator 服务

或者您可以按照this answer 中的说明请求 MANAGE_ACCOUNTS 权限

MANAGE_ACCOUNTS:API 文档对此并不清楚 允许。但根据 Bryan 的回答,一个应用程序只能 删除/修改它自己创建的帐户。当然可以创建 任何新帐户,并对其进行管理。

【讨论】:

    猜你喜欢
    • 2023-04-08
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    • 2015-11-26
    • 2017-04-07
    • 2018-07-10
    • 1970-01-01
    相关资源
    最近更新 更多