動態申請許可權---通訊錄 及獲取通訊錄列表
阿新 • • 發佈:2019-01-09
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; } }