2012-02-01 10 views
3

私はthese.contactのように行ってはアンドロイドでプログラムで連絡先を追加する方法は?

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

を追加しますか? –

答えて

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

を使用してみてくださいそして、あなたが使用しているAndroidのバージョンマニフェストファイルにアクセス権を下回る

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

上記のコードで挿入例外が発生します。07-18 02:48:05.450:W/System.err(30055):android.content.OperationApplicationException:挿入に失敗しました – deepwinter

+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) –

+0

良い答えがここにあります:http://stackoverflow.com/questions/12576185/cannot-insert-android-contacts-programmatically-into-android-device –

関連する問題