1. 程式人生 > >動態申請許可權---通訊錄 及獲取通訊錄列表

動態申請許可權---通訊錄 及獲取通訊錄列表

   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;
    }
}