4

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

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

4

2 回答 2

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>
于 2012-11-04T16:07:59.413 回答
1

AddAccountExplicitly的文档说:

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

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

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

于 2012-11-26T15:04:29.643 回答