2015-04-21 21 views
0

我曾嘗試使用下面的代碼創建了我的應用程序自定義帳戶:的Android編程插入接觸不會鏈接到我的應用程序

Account account = new Account(username, accountType); 
    ContentResolver.setIsSyncable(account, context.getString(R.string.CONTACT_AUTHORITY), 1); 
    ContentResolver.setSyncAutomatically(account, context.getString(R.string.CONTACT_AUTHORITY), true); 
    if(accManager.addAccountExplicitly(account, password, userData)) { 
     Intent intent = new Intent(); 
     intent.putExtra(AccountManager.KEY_ACCOUNT_NAME, account.name); 
     intent.putExtra(AccountManager.KEY_ACCOUNT_TYPE, account.type); 
     intent.putExtra(AccountManager.KEY_AUTHTOKEN, account.type); 
     context.setAccountAuthenticatorResult(intent.getExtras()); 
     context.setResult(Activity.RESULT_OK); 
     return account; 
    } else { 
     // display error 
    } 

然後我試着用插入一個新的聯繫方式如下:

// insert new contact 
ContentValues values = new ContentValues(); 
values.put(ContactsContract.RawContacts.ACCOUNT_TYPE, accountType); 
values.put(ContactsContract.RawContacts.ACCOUNT_NAME, accountName); 
Uri rawContactUri = getContentResolver().insert(ContactsContract.RawContacts.CONTENT_URI, values); 
long rawContactId = ContentUris.parseId(rawContactUri); 
Log.d("ABC", "New raw contact id = " + rawContactId); 

// insert new rawContact id 
values.clear(); 
values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId); 
values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE); 
values.put(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, "zzzzzawesome"); 
getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values); 

我能夠插入新的聯繫人,但問題是當我查看聯繫人列表中的該聯繫人時,它沒有在「連接的Via」部分中顯示我的應用圖標,而是顯示了電話圖標,任何想法爲什麼?

我使用三星S5測試順便說一句。

enter image description here

回答

1

我終於解決了這個問題,問題在於缺乏SyncAdapter服務實現的。在AndroidManifest.xml中添加以下內容後,問題就解決了。

<service 
     android:name=".authenticator.ContactsSyncAdapterService" 
     android:exported="true"> 
     <intent-filter> 
      <action android:name="android.content.SyncAdapter" /> 
     </intent-filter> 
     <meta-data 
      android:name="android.content.SyncAdapter" 
      android:resource="@xml/sync_contacts" /> 
    </service> 
相關問題