1、添加权限
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
2、安卓6.0以上版本获取权限
ActivityCompat.requestPermissions(
TongxunluActivity.this, new String[]{Manifest.permission.READ_CONTACTS,Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
3、创建工具方法
// 获得所有的联系人
Cursor cur = context.getContentResolver().query(
ContactsContract.Contacts.CONTENT_URI,
null,
null,
null,
ContactsContract.Contacts.DISPLAY_NAME
+ " COLLATE LOCALIZED ASC");
// 循环遍历
if (cur.moveToFirst()) {
int idColumn = cur.getColumnIndex(ContactsContract.Contacts._ID);
int displayNameColumn = cur
.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
do {
jsonObject = new JSONObject();
contactData.put("information" + num, jsonObject);
num++;
// 获得联系人的ID号
String contactId = cur.getString(idColumn);
// 获得联系人姓名
String disPlayName = cur.getString(displayNameColumn);
// 查看该联系人有多少个电话号码。如果没有这返回值为0
int phoneCount = cur
.getInt(cur
.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
jsonObject.put("name", disPlayName);
4、调用方法即可
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case 1:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//在这里执行读取通讯录方法
try {
ContactType mobiletype= new ContactType(this);
String contactinfo=mobiletype.getInformation();
LgqLogutil.e("通讯录==== "+contactinfo);
textView.setText(contactinfo);
} catch (JSONException e) {
e.printStackTrace();
}
} else {
Toast.makeText(this, "获取联系人权限失败", Toast.LENGTH_SHORT).show();
}
break;
default:
}
}
运行结果是:
demo链接:https://download.csdn.net/download/meixi_android/11959232
在线bug交流:QQ1085220040