2017-07-17 13 views
0

を追加:は、私はこのコードを使用して新しい連絡先を追加しようとしている新しい連絡先(アンドロイド)

try{ 
      ArrayList<ContentProviderOperation> ops = new ArrayList<android.content.ContentProviderOperation>(); 

      if(!name.equals("")) { 
       ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
         .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) 
         .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE) 
         .withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, name) 
         .build()); 
      } 

      if(!number.equals("")){ 
       ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
         .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) 
         .withValue(ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE) 
         .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, number) 
         .withValue(ContactsContract.CommonDataKinds.Phone.TYPE,ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE) 
         .build()); 
      } 

      if(!email.equals("")){ 
       ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
         .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) 
         .withValue(ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE) 
         .withValue(ContactsContract.CommonDataKinds.Email.DATA, email) 
         .withValue(ContactsContract.CommonDataKinds.Email.TYPE, ContactsContract.CommonDataKinds.Email.TYPE_WORK) 
         .build()); 
      } 

      context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
     } 
    } catch (Exception e) { 
     Toast.makeText(context,e.toString(),Toast.LENGTH_SHORT).show(); 
    } 

私はまた、マニフェストにWRITE_CONTACTS許可を指定し、私は、実行時にそれを要求しました。私は悪いやっている何をにエラーが、連絡先が追加されていない返さないことが、しかし

、...

+1

Androidのバージョンは、実行時の権限を含める必要がロリポップよりも大きい場合。または、このような権限を与えることができます**設定>アプリケーション>あなたのアプリを選択>権限を参照してください>権限を切り替えます*** –

+0

権限は実行時にも付与されます... –

答えて

0

私はついに答えを見つけました。

何かを保存しようとする前に、このクエリを含めるために必要とされています

ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI) 
        .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null) 
        .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null) 
        .build()); 
関連する問題