2016-09-30 9 views
2

アプリで作業しています。電話の連絡先とやり取りしています。 私の電話連絡先リストに新しい連絡先を追加したいと思います。私は次のコードを試しましたが、動作しません:インテントを使用せずにアプリケーションから新しい連絡先をプログラムで挿入する

void addContact(Context ctx, PreviewContactModel model) { 

     ArrayList<Contact_Model> contact_models = handler.getAllContacts(); 

     Contact_Model contact_model = new Contact_Model(); 

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

     int rawContactID = Integer.parseInt(contact_models.get(contact_models.size() - 1).getContactId()) + 1; 

     contact_model.setContactId(String.valueOf(rawContactID)); 

     contentProviderOperation.add(ContentProviderOperation 
       .newInsert(ContactsContract.RawContacts.CONTENT_URI) 
       .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null) 
       .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null) 
       .build()); 

     contact_model.setContactAccount(new ContactAccount(ContactsContract.RawContacts.ACCOUNT_NAME, ContactsContract.RawContacts.ACCOUNT_TYPE)); 

     // ------------------------------------------------------ Names 
     if (model.getName() != null) { 
      contentProviderOperation.add(ContentProviderOperation 
        .newInsert(ContactsContract.Data.CONTENT_URI) 
        .withValueBackReference(
          ContactsContract.Data.RAW_CONTACT_ID, rawContactID) 
        .withValue(
          ContactsContract.Data.MIMETYPE, 
          ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE) 
        .withValue(
          ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, 
          model.getName()).build()); 
      contact_model.setContactName(model.getName()); 
     } 

     // First Name 

     if (!model.getFirstName().equals("")) { 
      contentProviderOperation.add(ContentProviderOperation 
        .newInsert(ContactsContract.Data.CONTENT_URI) 
        .withValueBackReference(
          ContactsContract.Data.RAW_CONTACT_ID, rawContactID) 
        .withValue(
          ContactsContract.Data.MIMETYPE, 
          ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE) 
        .withValue(
          ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, 
          model.getFirstName()).build()); 
      contact_model.setFirstName(model.getFirstName()); 
     } 


     // Last Name 
     if (!model.getLastName().equals("")) { 
      contentProviderOperation.add(ContentProviderOperation 
        .newInsert(ContactsContract.Data.CONTENT_URI) 
        .withValueBackReference(
          ContactsContract.Data.RAW_CONTACT_ID, rawContactID) 
        .withValue(
          ContactsContract.Data.MIMETYPE, 
          ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE) 
        .withValue(
          ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME, 
          model.getLastName()).build()); 
      contact_model.setLastName(model.getLastName()); 
     } 

     // Contact Photo 

     if (model.getContactPhoto() != null) { 
      contentProviderOperation.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
        .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactID) 
        .withValue(ContactsContract.Data.IS_SUPER_PRIMARY, 1) 
        .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE) 
        .withValue(ContactsContract.CommonDataKinds.Photo.PHOTO, model.getContactPhoto()) 
        .build()); 

      try { 
       contact_model.setContactPhoto(new String(model.getContactPhoto(), "UTF-8")); 
      } catch (UnsupportedEncodingException e) { 
       e.printStackTrace(); 
      } 

     } 

     // Contact Note 

     if (!model.getNote().equals("")){ 
      contentProviderOperation.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
        .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactID) 
        .withValue(ContactsContract.Data.IS_SUPER_PRIMARY, 1) 
        .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Note.CONTENT_ITEM_TYPE) 
        .withValue(ContactsContract.CommonDataKinds.Note.NOTE, model.getNote()) 
        .build()); 
      contact_model.setNote(model.getNote()); 
     } 

     // Contact Birthday Date 

     if (!model.getDob().equals("")){ 
      contentProviderOperation.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
        .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactID) 
        .withValue(ContactsContract.Data.IS_SUPER_PRIMARY, 1) 
        .withValue(ContactsContract.CommonDataKinds.Event.TYPE, ContactsContract.CommonDataKinds.Event.TYPE_BIRTHDAY) 
        .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Event.CONTENT_ITEM_TYPE) 
        .withValue(ContactsContract.CommonDataKinds.Event.DATA, model.getDob()) 
        .build()); 
      contact_model.setDob(model.getDob()); 
     } 


     // ------------------------------------------------------ Mobile Number 
     if (model.getMap().get(0) != null) { 
      contentProviderOperation.add(ContentProviderOperation 
        .newInsert(ContactsContract.Data.CONTENT_URI) 
        .withValueBackReference(
          ContactsContract.Data.RAW_CONTACT_ID, rawContactID) 
        .withValue(
          ContactsContract.Data.MIMETYPE, 
          ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE) 
        .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, 
          model.getMap().get(0)) 
        .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, 
          ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE) 
        .build()); 
      contact_model.setContactNumber(model.getMap().get(0)); 
     } 

     // ------------------------------------------------------ Home Numbers 
     if (model.getMap().size() > 1) { 
      contentProviderOperation.add(ContentProviderOperation 
        .newInsert(ContactsContract.Data.CONTENT_URI) 
        .withValueBackReference(
          ContactsContract.Data.RAW_CONTACT_ID, rawContactID) 
        .withValue(
          ContactsContract.Data.MIMETYPE, 
          ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE) 
        .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, 
          model.getMap().get(1)) 
        .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, 
          ContactsContract.CommonDataKinds.Phone.TYPE_HOME) 
        .build()); 
     } 

     // ------------------------------------------------------ Work Numbers 
     if (model.getMap().size() > 2) { 
      contentProviderOperation.add(ContentProviderOperation 
        .newInsert(ContactsContract.Data.CONTENT_URI) 
        .withValueBackReference(
          ContactsContract.Data.RAW_CONTACT_ID, rawContactID) 
        .withValue(
          ContactsContract.Data.MIMETYPE, 
          ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE) 
        .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, 
          model.getMap().get(2)) 
        .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, 
          ContactsContract.CommonDataKinds.Phone.TYPE_WORK) 
        .build()); 
     } 

     // ------------------------------------------------------ workEmail 
     if (model.getEmail().size() > 0) { 
      contentProviderOperation.add(ContentProviderOperation 
        .newInsert(ContactsContract.Data.CONTENT_URI) 
        .withValueBackReference(
          ContactsContract.Data.RAW_CONTACT_ID, rawContactID) 
        .withValue(
          ContactsContract.Data.MIMETYPE, 
          ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE) 
        .withValue(ContactsContract.CommonDataKinds.Email.DATA, 
          model.getEmail().get(0)) 
        .withValue(ContactsContract.CommonDataKinds.Email.TYPE, 
          ContactsContract.CommonDataKinds.Email.TYPE_WORK) 
        .build()); 
      contact_model.setContactEmail(model.getEmail().get(0)); 
     } 
     // ------------------------------------------------------ homeEmail 
     if (model.getEmail().size() > 1) { 
      contentProviderOperation.add(ContentProviderOperation 
        .newInsert(ContactsContract.Data.CONTENT_URI) 
        .withValueBackReference(
          ContactsContract.Data.RAW_CONTACT_ID, rawContactID) 
        .withValue(
          ContactsContract.Data.MIMETYPE, 
          ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE) 
        .withValue(ContactsContract.CommonDataKinds.Email.DATA, 
          model.getEmail().get(1)) 
        .withValue(ContactsContract.CommonDataKinds.Email.TYPE, 
          ContactsContract.CommonDataKinds.Email.TYPE_HOME) 
        .build()); 
     } 
     // ------------------------------------------------------ Organization 
     if (!model.getOrganization().equals("") && !model.getJob().equals("")) { 
      contentProviderOperation.add(ContentProviderOperation 
        .newInsert(ContactsContract.Data.CONTENT_URI) 
        .withValueBackReference(
          ContactsContract.Data.RAW_CONTACT_ID, rawContactID) 
        .withValue(
          ContactsContract.Data.MIMETYPE, 
          ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE) 
        .withValue(
          ContactsContract.CommonDataKinds.Organization.COMPANY, 
          model.getOrganization()) 
        .withValue(
          ContactsContract.CommonDataKinds.Organization.TYPE, 
          ContactsContract.CommonDataKinds.Organization.TYPE_WORK) 
        .withValue(
          ContactsContract.CommonDataKinds.Organization.TITLE, 
          model.getJob()) 
        .withValue(
          ContactsContract.CommonDataKinds.Organization.TYPE, 
          ContactsContract.CommonDataKinds.Organization.TYPE_WORK) 
        .build()); 
      contact_model.setOrganization(model.getOrganization()); 
      contact_model.setJob(model.getJob()); 
     } 
     // Asking the Contact provider to create a new contact 
     try { 
      ctx.getContentResolver() 
        .applyBatch(ContactsContract.AUTHORITY, contentProviderOperation); 
      handler.addContact(contact_model); 
     } catch (Exception e) { 
      e.printStackTrace(); 
      //show exception in toast 
      Toast.makeText(ctx, "Exception: " + e.getMessage(), 
        Toast.LENGTH_SHORT).show(); 
     } 

    } 

私は間違って何かしている場合は私を修正してください。前もって感謝します。

+1

を試してみてくださいあなたはException' 'の種類を取得したのですか? 「それは仕事ではない」とはどういう意味ですか? – pskink

+0

例外@pskinkを取得できませんでした。機能がコールされていないとき例外が発生し、自分の電話をチェックするときコンタクトリストコンタクトが追加されていない。 –

答えて

1

は、このコード

 String displayName = "ABC"; 
     String emailID  = "[email protected]"; 
     String mobileNumber = "88888888"; 
     String homeNumber = "1111"; 
     String workNumber = "2222"; 
     String company  = "xyz"; 
     String jobTitle  = "boss"; 

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

     contentProviderOperationArrayList.add(ContentProviderOperation.newInsert(
       ContactsContract.RawContacts.CONTENT_URI) 
       .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null) 
       .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null) 
       .build()); 

     //Name 
     if (displayName != null) { 
      contentProviderOperationArrayList.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, 
          displayName).build()); 
     } 

     //Mobile Number 
     if (mobileNumber != null) { 
      contentProviderOperationArrayList.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, mobileNumber) 
        .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, 
          ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE) 
        .build()); 
     } 

     //Home 
     if (homeNumber != null) { 
      contentProviderOperationArrayList.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, homeNumber) 
        .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, 
          ContactsContract.CommonDataKinds.Phone.TYPE_HOME) 
        .build()); 
     } 

     //Work 
     if (workNumber != null) { 
      contentProviderOperationArrayList.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, workNumber) 
        .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, 
          ContactsContract.CommonDataKinds.Phone.TYPE_WORK) 
        .build()); 
     } 

     //Email 
     if (emailID != null) { 
      contentProviderOperationArrayList.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, emailID) 
        .withValue(ContactsContract.CommonDataKinds.Email.TYPE, ContactsContract.CommonDataKinds.Email.TYPE_WORK) 
        .build()); 
     } 

     //Organization 
     if (!company.equals("") && !jobTitle.equals("")) { 
      contentProviderOperationArrayList.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
        .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) 
        .withValue(ContactsContract.Data.MIMETYPE, 
          ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE) 
        .withValue(ContactsContract.CommonDataKinds.Organization.COMPANY, company) 
        .withValue(ContactsContract.CommonDataKinds.Organization.TYPE, ContactsContract.CommonDataKinds.Organization.TYPE_WORK) 
        .withValue(ContactsContract.CommonDataKinds.Organization.TITLE, jobTitle) 
        .withValue(ContactsContract.CommonDataKinds.Organization.TYPE, ContactsContract.CommonDataKinds.Organization.TYPE_WORK) 
        .build()); 
     } 

     // Creating new contact 
     try { 
      getContentResolver().applyBatch(ContactsContract.AUTHORITY, contentProviderOperationArrayList); 
     } catch (Exception e) { 
      e.printStackTrace(); 
      Toast.makeText(yourContext, "Error: " + e.getMessage(), Toast.LENGTH_SHORT).show(); 
     } 
+0

私はこのコードを@Febi Mathewに使っていますが、それは同じ問題ではありません。連絡先が例外なく連絡先リストに追加されていません。また、私はこれを確認しています[link](http://stackoverflow.com/a/4744514/6583944) –

+0

マニフェストに必要な権限が追加されているかどうか確認してください。また、マシュマロ以上を実行しているデバイスを使用している場合は、アプリケーションに連絡先を追加する権限が与えられているかどうかを確認してください。 –

+0

はいマニフェストの 'use-permission android:name = "android.permission.READ_CONTACTS" /> に読み取りと書き込みの両方の権限を追加しました。実行時に許可を与える@Fabi Mathew。 –

関連する問題