版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaoshuxgh/article/details/85098530
private static String[] PERMISSIONS_STORAGE = {//动态申请权限列表
// "android.permission.WRITE_CONTACTS",
"android.permission.READ_CONTACTS"};//读通讯录权限的权限名
private PermissionListener mListener;
private void getReadPhone() {
if (Build.VERSION.SDK_INT >= 23) {//判断当前系统是不是Android6.0
requestRuntimePermissions(PERMISSIONS_STORAGE, new PermissionListener() {
@Override
public void granted() {
Log.e("读通讯录权限申请", "已通过");
// GetNumber.getNumber(SplashActivity.this);
}
@Override
public void denied(List<String> deniedList) {
//权限申请未通过
Log.e("读通讯录权限申请", "已拒绝");
}
});
}
}
/**
* 申请权限
*/
public void requestRuntimePermissions(
String[] permissions, PermissionListener listener) {
mListener = listener;
List<String> permissionList = new ArrayList<>();
// 遍历每一个申请的权限,把没有通过的权限放在集合中
for (String permission : permissions) {
if (ContextCompat.checkSelfPermission(MainActivity.this, permission) !=
PackageManager.PERMISSION_GRANTED) {
permissionList.add(permission);
} else {
mListener.granted();
}
}
// 申请权限
if (!permissionList.isEmpty()) {
ActivityCompat.requestPermissions(MainActivity.this,
permissionList.toArray(new String[permissionList.size()]), 1);
}
}
上面是获取通讯录权限,下面是获取通讯录列表:
public class GetNumber {
public static List<PhoneInfo> lists = new ArrayList<PhoneInfo>();
public static String getNumber(Context context) {
if (lists != null)
lists.clear();
try {
Cursor cursor = context.getContentResolver().query(Phone.CONTENT_URI, null, null, null, null);
String phoneNumber;
String phoneName;
while (cursor.moveToNext()) {
phoneNumber = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));//电话号码
phoneName = cursor.getString(cursor.getColumnIndex(Phone.DISPLAY_NAME));//姓名
PhoneInfo info = new PhoneInfo(phoneName, phoneNumber.trim().replace("+", ""));
lists.add(info);
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}