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文档中没有一个关于这个问题的字!