【问题标题】:addAccountExplicitly throws IllegalStateException caused by SecurityexceptionaddAccountExplicitly 抛出由 Securityexception 引起的 IllegalStateException
【发布时间】:2012-11-01 13:22:05
【问题描述】:

使用此代码会引发该异常,并且不会将创建的帐户添加到帐户管理器中。

AccountManager am = AccountManager.get(activity);
Account acc = new Account(name,activity.getString(R.string.account_type));
am.addAccountExplicitly(acc,"Password",null);

我已经关注了这个 - http://developer.android.com/training/id-auth/custom_auth.html

知道为什么会这样吗?

//edit: Caused by: java.lang.SecurityException: caller uid 10035 is different than the authenticationator's uid

【问题讨论】:

标签: android accountmanager securityexception


【解决方案1】:

您是否尝试过在清单中设置权限,我怀疑您可能需要这个?

<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS"></uses-permission>
<uses-permission android:name="android.permission.GET_ACCOUNTS"></uses-permission>
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS"></uses-permission>
<uses-permission android:name="android.permission.USE_CREDENTIALS"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>

【讨论】:

  • 是的,这不是权限问题我刚刚发现我忘了添加错误消息,编辑了第一个主题
【解决方案2】:

AddAccountExplicitly 的文档说:

此方法需要调用者持有权限 AUTHENTICATE_ACCOUNTS 并具有与添加帐户相同的 UID 身份验证器。

引发的 SecurityException 说明了问题,尝试添加帐户的应用程序的 UID 与身份验证器的 UID 不同。换句话说,它们是两个不同的应用程序。

如果您希望这两个是单独的应用程序,您可以确保在它们之间共享 UID。有关如何执行此操作的更多信息,请参阅android:sharedUserId section of this page

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-07
    • 1970-01-01
    • 2019-06-10
    • 2015-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多