package com.example.write_person; import android.content.ContentProviderOperation; import android.content.ContentResolver; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.widget.Button; import java.util.ArrayList; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private static final String TAG = "TestContact"; private Button btn; private Button btn2; private Button btn3; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } //查詢全部聯繫人的姓名,電話,郵箱 public void TestContact() throws Exception { Uri uri = Uri.parse("content://com.android.contacts/contacts"); ContentResolver resolver = getApplicationContext().getContentResolver(); Cursor cursor = resolver.query(uri, new String[]{"_id"}, null, null, null); while (cursor.moveToNext()) { int contractID = cursor.getInt(0); StringBuilder sb = new StringBuilder("contractID="); sb.append(contractID); uri = Uri.parse("content://com.android.contacts/contacts/" + contractID + "/data"); Cursor cursor1 = resolver.query(uri, new String[]{"mimetype", "data1", "data2"}, null, null, null); while (cursor1.moveToNext()) { String data1 = cursor1.getString(cursor1.getColumnIndex("data1")); String mimeType = cursor1.getString(cursor1.getColumnIndex("mimetype")); if ("vnd.android.cursor.item/name".equals(mimeType)) { //是姓名 sb.append(",name=" + data1); } else if ("vnd.android.cursor.item/email_v2".equals(mimeType)) { //郵箱 sb.append(",email=" + data1); } else if ("vnd.android.cursor.item/phone_v2".equals(mimeType)) { //手機 sb.append(",phone=" + data1); } } cursor1.close(); Log.i(TAG, sb.toString()); } cursor.close(); } //查詢指定電話的聯繫人姓名,郵箱 public void testContactNameByNumber() throws Exception { String number = "15600577833"; Uri uri = Uri.parse("content://com.android.contacts/data/phones/filter/" + number); ContentResolver resolver = getApplicationContext().getContentResolver(); Cursor cursor = resolver.query(uri, new String[]{"display_name"}, null, null, null); if (cursor.moveToFirst()) { String name = cursor.getString(0); Log.i(TAG, name); } cursor.close(); } //添加聯繫人,使用事務 public void testAddContact() throws Exception { Uri uri = Uri.parse("content://com.android.contacts/raw_contacts"); ContentResolver resolver = getApplicationContext().getContentResolver(); ArrayList<ContentProviderOperation> operations = new ArrayList<ContentProviderOperation>(); ContentProviderOperation op1 = ContentProviderOperation.newInsert(uri) .withValue("account_name", null) .build(); operations.add(op1); uri = Uri.parse("content://com.android.contacts/data"); ContentProviderOperation op2 = ContentProviderOperation.newInsert(uri) .withValueBackReference("raw_contact_id", 0) .withValue("mimetype", "vnd.android.cursor.item/name") .withValue("data2", "張三三") .build(); operations.add(op2); ContentProviderOperation op3 = ContentProviderOperation.newInsert(uri) .withValueBackReference("raw_contact_id", 0) .withValue("mimetype", "vnd.android.cursor.item/phone_v2") .withValue("data1", "13539777967") .withValue("data2", "2") .build(); operations.add(op3); ContentProviderOperation op4 = ContentProviderOperation.newInsert(uri) .withValueBackReference("raw_contact_id", 0) .withValue("mimetype", "vnd.android.cursor.item/email_v2") .withValue("data1", "asdfasfad@163.com") .withValue("data2", "2") .build(); operations.add(op4); resolver.applyBatch("com.android.contacts", operations); } private void initView() { btn = (Button) findViewById(R.id.btn); btn.setOnClickListener(this); btn2 = (Button) findViewById(R.id.btn2); btn2.setOnClickListener(this); btn3 = (Button) findViewById(R.id.btn3); btn3.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn: try { testAddContact(); } catch (Exception e) { e.printStackTrace(); } break; case R.id.btn2: try { TestContact(); } catch (Exception e) { e.printStackTrace(); } break; case R.id.btn3: try { testContactNameByNumber(); } catch (Exception e) { e.printStackTrace(); } break; } } }
添加網絡權限:java
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_CONTACTS"/> <uses-permission android:name="android.permission.WRITE_CONTACTS"/>
佈局:android
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.write_person.MainActivity"> <Button android:id="@+id/btn" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="點擊添加聯繫人!" /> <Button android:id="@+id/btn2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="查詢全部聯繫人的姓名,電話,郵箱" /> <Button android:id="@+id/btn3" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="查詢指定電話的聯繫人姓名,郵箱" /> </LinearLayout>