2016-04-29 14 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のを作成するときに、その次の部分を理解しないものをその名前の任意の接触がある場合は、我々が検索したとき、私は最初の部分を理解しています。私はコードをダウンロードするときこれはすでにこれのようなものだったGoogleのアカウント名をアカウントの種類があります。連絡先の名前と連絡先の電子メールを入れるのですか?携帯電話番号も家の電話番号も入れる方法がありますか?もし私が自分自身を説明していない私は現在それを私の英語ではないが、私は現在表現しようとしています。 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()); 
関連する問題