protected boolean showRationale(String[] permissions, PermissiveMessenger messenger) { shouldDisplayRationale = false; Rationale rationale; if (rationaleRef != null && (rationale = rationaleRef.get()) != null) { rationale.onShowRationale(getContext(), permissions, messenger); return true; } // show globally registered rationale, if any return Permissive.fireGlobalRationale(getContext(), permissions, messenger); }
private boolean requestPermissions(Permissive.Request request) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { return false; } final Activity activity = request.getContext(); if (!isValidActivity(activity)) { return false; } if(DEBUG) { Log.v(TAG, "requestPermissions(): " + request); } final String[] permissionsToAsk = request.getRefusedPermissions(activity); if (permissionsToAsk.length > 0) { if (request.shouldDisplayRationaleFirst() && showRationaleForRequest(request)) { return true; } askForPermissions(activity, permissionsToAsk); return true; } return false; }
private boolean showRationaleForRequest(Permissive.Request request) { Activity activity = request.getContext(); if (null == activity) { return false; } final String[] rationalePermissions = Permissive.getPermissionsRequiringRationale(activity, request.getPermissions()); if (request.shouldDisplayRationale()) { final PermissiveMessenger messenger = new PermissiveMessenger(handler, request.getPermissions()); return request.showRationale(rationalePermissions, messenger) && !request.rebuild; } return false; }