android通讯录完整功能实现,Android编程实现通讯录中联系人的读取,查询,添加功能示例...

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="查询指定电话的联系人姓名,邮箱" />

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值