2012-02-01 68 views
3

我喜歡做these.contact不添加如何在android中以編程方式添加聯繫人?

ContentResolver cr = this.getContentResolver(); 
     ContentValues cv = new ContentValues(); 
     cv.put(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, "sai1"); 
     cv.put(ContactsContract.CommonDataKinds.Phone.NUMBER, "9640954335"); 
     cv.put(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE);   cr.insert(ContactsContract.RawContacts.CONTENT_URI, cv); 
+0

您所使用的Android版本添加下面的權限? – 2012-02-01 13:13:46

回答

4

嘗試使用下面的代碼

ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 
     int rawContactInsertIndex = ops.size(); 

     Log.i("Line38", "Here"); 
      ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI) 
         .withValue(RawContacts.ACCOUNT_TYPE, AccountManager.KEY_ACCOUNT_TYPE)   
         .withValue(RawContacts.ACCOUNT_NAME, AccountManager.KEY_ACCOUNT_NAME)   
         .build()); 

     ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI)  
         .withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex)  
         .withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE)  
         .withValue(StructuredName.DISPLAY_NAME, "u232786seee") 
         .withValue(StructuredName.IN_VISIBLE_GROUP,true) 
         .build()); 

     ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
     .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) 
     .withValue(ContactsContract.Data.MIMETYPE, 
       ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE) 
     .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER,"23232343434") 
     .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, "4343") 
     .build()); 

     ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
     .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) 
     .withValue(ContactsContract.Data.MIMETYPE, 
       ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE) 
     .withValue(ContactsContract.CommonDataKinds.Email.DATA, "") 
     .withValue(ContactsContract.CommonDataKinds.Email.TYPE, "") 
     .build()); 

     //Log.i("Line43", Data.CONTENT_URI.toString()+" - "+rawContactInsertIndex); 

     try { 
       getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
     } catch (RemoteException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
     } catch (OperationApplicationException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
     } 

而且清單文件

<uses-permission android:name="android.permission.WRITE_CONTACTS"/> 
+0

我得到一個插入異常與上面的代碼.. 07-18 02:48:05.450:W/System.err(30055):android.content.OperationApplicationException:插入失敗 – deepwinter 2013-07-18 09:48:03

+1

我試過你的解決方案。但即時通訊錯誤09-02 11:03:47.373:W/System.err(1185):android.content.OperationApplicationException:插入失敗 09-02 11:03:47.373:W/System.err(1185):at android.database.DatabaseUtils.readExceptionWithOperationApplicationExceptionFromParcel(DatabaseUtils.java:158) – 2013-09-02 11:07:16

+0

好回答這裏:http://stackoverflow.com/questions/12576185/cannot-insert-android-contacts-programmatically-into-android-device – 2014-01-06 11:07:05

相關問題