Android 如何使用AddAccount显式添加帐户?
我发现很多关于这个话题的问题,没有答案,或者外部链接中断。我想以一种简单的方式添加一个帐户。错误总是一样的:java.lang.SecurityException:调用方uid xxxxx与身份验证程序的uid不同(我在其中显式调用AddAccount)。但是帐户类型在代码和xml中是相同的,所以。。。我哪里做错了Android 如何使用AddAccount显式添加帐户?,android,account,accountmanager,securityexception,Android,Account,Accountmanager,Securityexception,我发现很多关于这个话题的问题,没有答案,或者外部链接中断。我想以一种简单的方式添加一个帐户。错误总是一样的:java.lang.SecurityException:调用方uid xxxxx与身份验证程序的uid不同(我在其中显式调用AddAccount)。但是帐户类型在代码和xml中是相同的,所以。。。我哪里做错了 public class AuthActivity extends Activity { @Override protected void onCreate(Bund
public class AuthActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_auth);
AccountManager accountManager = AccountManager.get(this);
final Account account = new Account("username", getString(R.string.account_type));
accountManager.addAccountExplicitly(account, "password", null);
}
}
<?xml version="1.0" encoding="utf-8"?>
<account-authenticator
xmlns:android="http://schemas.android.com/apk/res/android"
android:accountType="@string/account_type"
android:icon="@drawable/ic_launcher"
android:smallIcon="@drawable/ic_launcher"
android:label="@string/name_app" />
公共类AuthActivity扩展活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u auth);
AccountManager=AccountManager.get(此);
最终账户=新账户(“用户名”,getString(R.string.Account_type));
accountManager.addAccountExplicit(帐户,“密码”,null);
}
}
作为例外,您的应用程序和验证器必须共享相同的UID。通常,所有不同的应用程序都有不同的UID,因此如果您没有专门设置它们以共享UID,它们将有不同的UID
您可以查看应用程序分配的UID。您可以通过在中使用获取ApplicationInfo
您可以使用清单文件中的属性为验证器和应用程序设置共享UID。我遇到了与您相同的问题。事实证明,我没有在我的应用程序清单文件中正确注册身份验证服务:
<service
android:name="com.example.android.syncadapter.AuthenticatorService">
<intent-filter>
<action android:name="android.accounts.AccountAuthenticator"/>
</intent-filter>
<meta-data
android:name="android.accounts.AccountAuthenticator"
android:resource="@xml/authenticator" />
</service>
您的意图过滤器名称由android框架定义。所以它必须是“android.accounts.AccountAuthenticator”以确保您正在尝试添加自己类型的帐户,而不是Google、Facebook或类似的帐户?是的,当然我正在尝试添加自定义类型的帐户。