addAccount显式成功,但未在“设置/帐户”中显示任何帐户

时间:2015-06-27 17:22:01

标签: android accountmanager

我已经写了一些代码来在设置中添加我的自定义帐户 点击添加帐户后,我可以看到自定义帐户,点击时我会显示登录表单。在里面我打电话给下面的代码

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);

第一次显示"帐户已添加",但无法在设置/帐户中看到任何内容。 任何人都可以帮助我。

这是完整的代码

{{1}}

3 个答案:

答案 0 :(得分:9)

我遇到了同样的问题,发现当authenticator.xml中的android:label字段(或者您在AndroidManifest.xml中的身份验证服务定义中指向的任何xml文件)不包含该帐户的本地化字符串时未显示在“设置”下。

即,这不起作用: android:label =“我的应用”

但是这样做: 机器人:标签= “@串/ my_app应用”

答案 1 :(得分:0)

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

data.putString(AccountManager.KEY_ACCOUNT_TYPE, mAuthTokenType );

答案 2 :(得分:0)

尝试检查您是否在AndroidManifest文件中正确填写了有关SyncService和SyncAdapter的数据。这对我有帮助。

这一个在清单中:

qrScanner.on 'scan', (err, message) ->
  alert(message) if message?

这个在syncadapter.xml中:

<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>