2014-07-17 64 views
1

在搜索幾乎整個互聯網之後,我對這個問題非常頭疼。除了API 19 KitKat(Google Nexus),我還有一個可用於任何API的代碼。這是向設備添加/插入聯繫人的典型代碼。任何人有任何想法,爲什麼這不工作正確?kitkat(API 19)插入聯繫人?

ArrayList<ContentProviderOperation> op_list = new ArrayList<ContentProviderOperation>(); 

     ContentProviderOperation.Builder builder = ContentProviderOperation 
       .newInsert(RawContacts.CONTENT_URI); 
     builder.withValue(RawContacts.ACCOUNT_NAME, 
       appData.getAccount().name); 
     builder.withValue(RawContacts.ACCOUNT_TYPE, 
       appData.getAccount().type); 
     builder.withValue(RawContacts.SYNC1, user.getName()); 
     op_list.add(builder.build()); 

     builder = ContentProviderOperation 
       .newInsert(ContactsContract.Data.CONTENT_URI); 
     builder.withValueBackReference(
       ContactsContract.CommonDataKinds.StructuredName.RAW_CONTACT_ID, 
       0); 
     builder.withValue(
       ContactsContract.Data.MIMETYPE, 
       ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE); 
     builder.withValue(
       ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, 
       user.getName()); 
     op_list.add(builder.build()); 

     builder = ContentProviderOperation 
       .newInsert(ContactsContract.Data.CONTENT_URI); 
     builder.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0); 
     builder.withValue(ContactsContract.Data.MIMETYPE, 
       "vnd.android.cursor.item/customMimeType"); 
     builder.withValue(ContactsContract.Data.DATA1, user.getID()); 
     builder.withValue(ContactsContract.Data.DATA2, "Profile"); 
     builder.withValue(ContactsContract.Data.DATA3, "Send message"); 
     builder.withValue(Data.DATA10, user.getID()); 
     op_list.add(builder.build()); 

     try { 
      contentResolver.applyBatch(ContactsContract.AUTHORITY, op_list); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

不會引發異常,但插入後無法在聯繫人列表中找到聯繫人。

+0

「幾乎搜索完整個互聯網之後......」需要多長時間? –

+0

更嚴重的一點是,「不起作用」是什麼意思?你的代碼是做什麼的,它與你期望的有什麼不同? –

+0

@ Code-Apprentice我認爲我不必告訴你這是一個笑話:)而對於你的第二個問題,在上一個陳述中已經得到了回答。我想要將聯繫人插入設備,但運行此代碼後,聯繫人不在系統聯繫人列表中:)但僅在API 19上:) –

回答

0

儘量不要使用DATA3列(它具有android框架MIME類型的LABEL別名)。我會將MIMETYPE更改爲完全不同於框架MIME類型的內容,如org.myprog.app/mycustomType