Android 获取联系人详解
Android ContentResolver
ContentResolver:内容处理者
处理,操作URI路径里面的数据
Context提供了
getContentResolver()
方法获取ContentResolver对象ContentResolver reslover = getApplicationContext().getContentResolver();
ContentResolver提供如下方法操作数据(具体操作不展开)
insert() delete() update() query()
Android URI
路径
保存需要操作数据的路径
Uri工具类提供了parse() 静态方法将字符串转换成Uri
Uri uri = Uri.parse("content://com.android.contacts/contacts");
Android Cursor
用于保存数据处理者
ContentResolver
处理的数据
Cursor cursor = reslover.query(uri, null, null, null, null);
代码:
package com.example.wen.myapplication;
import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
import android.nfc.Tag;
import android.provider.ContactsContract;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
testContacts();
} catch (Exception e) {
e.printStackTrace();
}
}
public void testContacts() throws Exception {
Uri uri = Uri.parse("content://com.android.contacts/contacts");
ContentResolver reslover = getApplicationContext().getContentResolver();
//获取游标
Cursor cursor = reslover.query(uri, null, null, null, null);
while (cursor.moveToNext()) {
//获得联系人ID
String id = cursor.getString(cursor.getColumnIndex(android.provider.ContactsContract.Contacts._ID));
//获得联系人姓名
String name = cursor.getString(cursor.getColumnIndex(android.provider.ContactsContract.Contacts.DISPLAY_NAME));
System.out.println(name);
//获得联系人手机号码
Cursor phone = reslover.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + id, null, null);
//StringBuilder 与 StringBuffer基本相同,但是StringBuilder线程不同步
StringBuilder sb = new StringBuilder("contactid=").append(id).append(name);
while (phone.moveToNext()) { //取得电话号码(可能存在多个号码)
int phoneFieldColumnIndex = phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
String phoneNumber = phone.getString(phoneFieldColumnIndex);
System.out.println(phoneNumber);
sb.append(phoneNumber);
}
//建立一个Log,使得可以在LogCat视图查看结果
Log.i("输入的信息", sb.toString());
}
}
}
写在最后
我也是Android 的初学者,如果对这些知识点有理解错的地方,请牛人指点