2016-09-30 1 views
2

Ich arbeite mit einer App in mit ich interagieren mit Telefon Kontakte. Ich möchte einen neuen Kontakt zu meiner Telefon-Kontaktliste hinzufügen. Ich habe den folgenden Code versucht, aber es wird nicht funktionieren:Einfügen eines neuen Kontakts programmgesteuert durch meine App ohne Verwendung Intent

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

    } 

Bitte korrigiert mich, wenn ich tue etwas falsch gemacht. Danke im Voraus.

+1

so was für 'Exception' Sie bekommen haben? Was bedeutet "es ist nicht Arbeit"? – pskink

+0

Ich habe keine Ausnahme @ pskink erhalten. Wenn Funktion Aufruf ist, tritt keine Ausnahme auf, und wenn ich meine Telefonkontaktliste überprüfe, wird der Kontakt nicht hinzugefügt. –

Antwort

1

diesen Code Versuchen

 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

Ich habe diesen Code @Febi Mathew, aber es funktioniert nicht, das gleiche Problem. Der Kontakt wird der Kontaktliste nicht ohne Ausnahme hinzugefügt. Und ich habe auch diese [link] (http://stackoverflow.com/a/4744514/6583944) –

+0

Überprüfen Sie, ob Sie die erforderlichen Berechtigungen in Ihrem Manifest hinzugefügt haben. Überprüfen Sie auch, ob Ihre Anwendung zum Hinzufügen von Kontakten berechtigt ist, wenn Sie ein Gerät verwenden, auf dem Marshmallow oder höher läuft. –

+0

Ja, ich habe sowohl die Lese- als auch die Schreibberechtigung im Manifest ' ' und hinzugefügt Erteilen Sie zur Laufzeit eine Genehmigung @Fabi Mathew. –

Verwandte Themen