addAccountExplyly成功,但没有在设置/帐户中显示任何帐户

问题描述:

我已经写了一些代码来添加我的自定义帐户设置 虽然点击添加帐户我可以看到我的自定义帐户,当点击时我显示登录表单。这里面我打电话下面的代码addAccountExplyly成功,但没有在设置/帐户中显示任何帐户

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

您的登录形式应该是AccountAuthenticatorActivity'的'一个子类,否则将不显示上设置 – chip

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

data.putString(AccountManager.KEY_ACCOUNT_TYPE,mAuthTokenType);

我有同样的问题,并发现,当机器人:标签字段中authenticator.xml(或任何XML文件你指着在AndroidManifest.xml您的认证服务定义)不包含一个本地化的字符串的帐户不会显示在设置下。

即,这不起作用: 机器人:标签= “我的应用”

但确实: 机器人:标签= “@字符串/ my_app应用”

+3

感谢的人,真正起作用,那是很愚蠢的,花了我一个工作日......不是关于这个问题的一个字android的文档! –

尽量正确地检查,如果你在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"/>