1.
private static final int PERMISSIONS_REQUEST_READ_CONTACTS = 100; private PermissionGranted permissionGranted;
//先申请权限 6.0以上的去申请 以读取联系人为例 public void canPermissionGranted(PermissionGranted permissionGranted) { // Check the SDK version and whether the permission is already granted or not. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && NVideoPhone.getContext().checkSelfPermission(Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) { this.permissionGranted = permissionGranted; requestPermissions(new String[]{Manifest.permission.READ_CONTACTS}, PERMISSIONS_REQUEST_READ_CONTACTS); //After this point you wait for callback in onRequestPermissionsResult(int, String[], int[]) overriden method } else { // Android version is lesser than 6.0 or the permission is already granted. permissionGranted.PermissionGranted(); } }
//申请权限的activity 回调函数 @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { if (requestCode == PERMISSIONS_REQUEST_READ_CONTACTS) { if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { // Permission is granted permissionGranted.PermissionGranted(); } else { permissionGranted.PermissionNotGranted(); ToastKit.showToast("Until you grant the permission, we canot display the names"); } permissionGranted = null; } }
2.
自定义了一个权限控制的接口 在 调用权限的activity中实现该接口/** * Created by PC on 2016/7/26. */ public interface PermissionGranted { void PermissionGranted(); void PermissionNotGranted(); }