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 operations = new ArrayList();
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;
}
}
}
添加网络权限:
布局:
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">
android:id="@+id/btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="点击添加联系人!" />
android:id="@+id/btn2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="查询所有联系人的姓名,电话,邮箱" />
android:id="@+id/btn3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="查询指定电话的联系人姓名,邮箱" />