本帖主要是修改了第二种方法在Android Studio中的运用
首先这里介绍一下 获取思路。
第一种 : 直接查通讯录的数据库
第二种 :设用通讯录的Activity 并返回所选择的数据。
先实现第二种吧。、第二种相对简单,易操作、
你要操作 手机中的通讯录,就要有权限 的操作。
android 内核linux
1、要在工程中 AndroidManifest.xml 文件中添加操作权限
<!– 读取联系人权限 –>
<uses-permission android:name=“android.permission.READ_CONTACTS” />
然后在你的activity 里面编写调用代码:
Intent intent = new Intent);
intent.setActionIntent.ACTION_PICK);
intent.setDataContactsContract.Contacts.CONTENT_URI);
startActivityForResultintent, REQUEST_CONTACT);
//重写的结果返回方法
@Override
protected void onActivityResultint requestCode, int resultCode, Intent data) {
super.onActivityResultrequestCode, resultCode, data);
switch requestCode) {
case 1:
if data == null) {
return;
}
Uri result = data.getData);
String contactId = result.getLastPathSegment);
String name = “”;
String phone = “”;
//得到名称
String[] projection = new String[] { ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME ,ContactsContract.Contacts.HAS_PHONE_NUMBER};
Cursor cursor = mContext.getContentResolver).queryContactsContract.Contacts.CONTENT_URI,
projection, // select sentence
ContactsContract.Contacts._ID + ” = ?”, // where sentence
new String[] { contactId }, // where values
ContactsContract.Contacts.DISPLAY_NAME); // order by
if cursor.moveToFirst)) {
name = cursor.getStringcursor.getColumnIndexContactsContract.Contacts.DISPLAY_NAME));
}
//得到 电话
projection = new String[] { ContactsContract.Contacts.NAME_RAW_CONTACT_ID, ContactsContract.Contacts.HAS_PHONE_NUMBER};
cursor = mContext.getContentResolver).queryContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null, // select sentence
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + “=” + contactId, // where sentence
null , // where values
null); // order by
if cursor.moveToFirst)) {
phone = cursor.getStringcursor.getColumnIndexContactsContract.CommonDataKinds.Phone.NUMBER));
}
//显示
Logger.iTAG,name+”:”+phone);
break;
}
}
就可以得到你选择的 联系的信息了。
转载自 http://leiwuluan.iteye.com/blog/1511255