addAccountExplicitly成功,但在设置/帐户中未显示任何帐户



我已经编写了一些代码来在设置中添加我的自定义帐户当点击添加帐户时,我可以看到我的自定义帐户,当点击时,我会显示登录表格。在里面我调用下面的代码

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:label字段(或您在AndroidManifest.xml中的authenticator服务定义中指向的任何xml文件)不包含本地化字符串时,帐户不会显示在Settings下。

即,这不起作用:android:label="我的应用程序"

但这确实:android:label="@string/my_app"

我注意到您发送了错误的帐户类型值。该值需要与authenticator.xml中的android:accountType匹配。

data.putString(AccountManager.KEY_ACCOUNT_TYPE,mAuthTokenType);

尝试检查是否在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"/>

最新更新