addAccountExplicitly抛出Securityexception引起的IllegalStateException

时间:2012-11-01 13:22:06

标签: android accountmanager securityexception

使用此代码会抛出该异常,并且不会将创建的帐户添加到客户经理。

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:引起:java.lang.SecurityException:调用者uid 10035与身份验证者的uid不同

2 个答案:

答案 0 :(得分:2)

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

<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>

答案 1 :(得分:1)

AddAccountExplicitly的文档说:

  

此方法要求调用者保留权限   AUTHENTICATE_ACCOUNTS并且与添加的帐户具有相同的UID   认证器。

抛出的SecurityException解释了问题,尝试添加帐户的应用程序的UID与身份验证器的UID不同。换句话说,它们是两种不同的应用。

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