2016-04-29 187 views
-1

嗨,大家好,我需要幫助來理解我沒有使用它的代碼,因爲我不明白,也許你們可以幫助我做到這一點。Android - 在手機中創建聯繫人

private void createContact(String name, String phone) { 
    ContentResolver cr = getContentResolver(); 

    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, 
      null, null, null, null); 

    if (cur.getCount() > 0) { 
     while (cur.moveToNext()) { 
      String existName = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
      if (existName.contains(name)) { 
       AlertDialog.Builder dialogBuilder=new AlertDialog.Builder(add_cli.this); 
       dialogBuilder.setMessage("Um contacto com este nome já existe."); 
       dialogBuilder.setPositiveButton("Ok", null); 
       dialogBuilder.show(); 
       return; 
      } 
     } 
    } 

    ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 
    ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI) 
      .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, "[email protected]") 
      .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, "com.google") 
      .build()); 
    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()); 
    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, phone) 
      .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_HOME) 
      .build()); 


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

    Toast.makeText(getApplicationContext(), "Contacto criado de seguida será adicionado como um dos seus clientes.", Toast.LENGTH_SHORT).show(); 

} 

我理解第一部分,當我們尋找是否有與該名稱是什麼我不明白它的下一部分,當我們創建一個ArrayList任何接觸。有一個帳戶類型的帳戶名與谷歌的事情,這已經是這樣,當我下載的代碼。是否把聯繫人姓名和聯繫人的電子郵件,有辦法把手機號碼,但家庭電話號碼呢?如果我不解釋自己目前說我的英語不是很好,但我試着表達目前。

--- EDITED ----

我有什麼來填補這些營地和這些是什麼陣營?

ContactsContract.RawContacts.ACCOUNT_TYPE 
ContactsContract.RawContacts.ACCOUNT_NAME 
ContactsContract.Data.RAW_CONTACT_ID 
+0

你的問題很難回答,因爲它不完全清楚你不瞭解代碼片段。請諮詢所用課程的文檔,如果您有更具體的問題,請回來。 – Egor

+0

我正在期待的文件,我真的不明白那裏有什麼,但我可以更具體我會編輯的問題。 –

+0

如果問題已經解決/回答,請讓我們知道你做了什麼。謝謝。 – Edward

回答

0

我已經設置了這部分代碼。

ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 
ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI) 
     .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null) 
     .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null) 
     .build());