动态申请权限---通讯录 及获取通讯录列表

版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
    }
}

猜你喜欢

转载自blog.csdn.net/xiaoshuxgh/article/details/85098530