Android AddAccount显式成功,但未在设置/帐户中显示任何帐户
我已经编写了一些代码来在设置中添加我的自定义帐户 单击“添加帐户”时,我可以看到我的自定义帐户,单击该帐户时,我将显示登录表单。在里面,我调用下面的代码Android AddAccount显式成功,但未在设置/帐户中显示任何帐户,android,accountmanager,Android,Accountmanager,我已经编写了一些代码来在设置中添加我的自定义帐户 单击“添加帐户”时,我可以看到我的自定义帐户,单击该帐户时,我将显示登录表单。在里面,我调用下面的代码 if (mAccountManager.addAccountExplicitly(account, password, userData)) { // worked System.out.println("Account added"); } else { // guess not
if (mAccountManager.addAccountExplicitly(account, password, userData)) {
// worked
System.out.println("Account added");
} else {
// guess not
System.out.println("NOT DONE");
}
首次显示“已添加帐户”,但在设置/帐户中看不到任何内容。
请任何人帮帮我
这是完整的代码
Log.d("AuthenticatorActivity", "onCreate");
mAccountManager = AccountManager.get(getBaseContext());
String accountName = getIntent().getStringExtra(ARG_ACCOUNT_NAME);
mAuthTokenType = getIntent().getStringExtra(ARG_AUTH_TYPE);
if (mAuthTokenType == null)
mAuthTokenType = AccountGeneral.AUTHTOKEN_TYPE_FULL_ACCESS;
accountName= "test55";
findAccount(accountName);
System.out.println(mAuthTokenType + "accountName : " + accountName);
Bundle data = new Bundle();
data.putString(AccountManager.KEY_ACCOUNT_NAME, accountName);
data.putString(AccountManager.KEY_ACCOUNT_TYPE, mAuthTokenType);
data.putString(AccountManager.KEY_AUTHTOKEN, authtoken);
data.putString(PARAM_USER_PASS, password);
Bundle userData = new Bundle();
userData.putString("userObjectId", "2");
data.putBundle(AccountManager.KEY_USERDATA, userData);
final Intent res = new Intent();
res.putExtras(data);
final Account account = new Account(accountName, "com.coderzheaven.auth_example");
if (mAccountManager.addAccountExplicitly(account, password, userData)) {
// worked
System.out.println("DONE");
} else {
// guess not
System.out.println("NOT DONE");
}
mAccountManager.addAccountExplicitly(account, password, userData);
mAccountManager.setAuthToken(account, mAuthTokenType, authtoken);
setAccountAuthenticatorResult(data);
setResult(RESULT_OK, res);
我注意到您为帐户类型发送了错误的值。该值需要与authenticator.xml中的android:accountType匹配
data.putString(AccountManager.KEY_ACCOUNT_TYPE,mAuthTokenType) 我也遇到了同样的问题,并发现authenticator.xml中的android:label字段(或您在AndroidManifest.xml中的authenticator服务定义中指向的任何xml文件)不包含本地化字符串时,帐户不会显示在“设置”下 也就是说,这不起作用: android:label=“我的应用程序” 但这确实:
android:label=“@string/my_app”尝试检查您是否在AndroidManifest文件中正确填写了有关SyncService和SyncAdapter的数据。这对我有帮助 清单中的这一项:
<service android:name=".Model.Sync.SyncService"
android:exported="true">
<intent-filter>
<action android:name="android.content.SyncAdapter" />
</intent-filter>
<meta-data android:name="android.content.SyncAdapter"
android:resource="@xml/syncadapter" />
</service>
syncadapter.xml中的这个:
<?xml version="1.0" encoding="utf-8"?>
<sync-adapter
xmlns:android="http://schemas.android.com/apk/res/android"
android:contentAuthority="com.example.android.datasync.provider"
android:accountType="example.com"
android:userVisible="true"
android:supportsUploading="true"
android:allowParallelSyncs="false"
android:isAlwaysSyncable="true"/>
您的登录表单应该是AccountAuthenticatorActivity
的子类,否则它不会在设置中显示Hanks man,这真的很有效,而且太愚蠢了,花了我一个工作日的时间。。。android文档中没有一个关于这个问题的字!