public void askAgain(){ runtimePermission.ask(); }
public void goToSettings() { runtimePermission.goToSettings(); }
public RxPermissions(final FragmentActivity activity) { runtimePermission = RuntimePermission.askPermission(activity); }
@Override public void subscribe(final SingleEmitter<PermissionResult> emitter) throws Exception { runtimePermission .request(permissions) .onResponse(new ResponseCallback() { @Override public void onResponse(PermissionResult result) { if (result.isAccepted()) { emitter.onSuccess(result); } else { emitter.onError(new Error(result)); } } }).ask(); } });
private void myMethod() { askPermission(RuntimePermissionMainActivityJava7.this, Manifest.permission.READ_CONTACTS, Manifest.permission.ACCESS_FINE_LOCATION) .ask(new PermissionListener() { @Override public void onAccepted(PermissionResult permissionResult, List<String> accepted) {
public void ask(@Nullable PermissionListener permissionListener) { onResponse(permissionListener) .ask(); }
/** * Fill permissions to only ask If we do not call this method, * If not set or empty, the library will find all needed permissions to ask from manifest * You can call .request(permissions) after this method if you want to give permissions in a separate method */ public static RuntimePermission askPermission(@Nullable final Fragment fragment, String... permissions) { @Nullable FragmentActivity activity = null; if(fragment != null){ activity = fragment.getActivity(); } return askPermission(activity).request(permissions); }
/** * Fill permissions to only ask If we do not call this method, * If not set or empty, the library will find all needed permissions to ask from manifest * You can call .request(permissions) after this method if you want to give permissions in a separate method */ public static RuntimePermission askPermission(@Nullable final FragmentActivity activity, String... permissions) { return new RuntimePermission(activity).request(permissions); }
/** * We want to only request given permissions * * @see android.Manifest.permission */ public RuntimePermission request(@Nullable final String... permissions) { if (permissions != null) { return this.request(Arrays.asList(permissions)); } else { return this; } }
@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { if (requestCode == REQUEST_CODE && permissions.length > 0 && this.listener != null) { final PermissionListener listener = this.listener; final List<String> acceptedPermissions = new ArrayList<>(); final List<String> askAgainPermissions = new ArrayList<>(); final List<String> refusedPermissions = new ArrayList<>(); for (int i = 0; i < permissions.length; i++) { final String permissionName = permissions[i]; if (grantResults[i] == PackageManager.PERMISSION_GRANTED) { acceptedPermissions.add(permissionName); } else { if (shouldShowRequestPermissionRationale(permissionName)) { //listener.onDenied(permissionResult); askAgainPermissions.add(permissionName); } else { refusedPermissions.add(permissionName); //listener.onForeverDenied(permissionResult); } } } listener.onRequestPermissionsResult(acceptedPermissions, refusedPermissions, askAgainPermissions); getFragmentManager().beginTransaction() .remove(this) .commitAllowingStateLoss(); } }
public static PermissionFragment newInstance(List<String> permissions) { final Bundle args = new Bundle(); args.putStringArrayList(LIST_PERMISSIONS, new ArrayList<String>(permissions)); final PermissionFragment fragment = new PermissionFragment(); fragment.setArguments(args); return fragment; }
public PermissionFragment() { setRetainInstance(true); }
private void onAllAccepted(@NonNull final List<String> permissions) { onReceivedPermissionResult(permissions, null, null); }
/** * If we request permission using .request(names), we only ask them * If not, this lib will search needed permissions from Manifest */ private List<String> findNeededPermissions(@NonNull Context context) { if (permissionsToRequest.isEmpty()) { return PermissionManifestFinder.findNeededPermissionsFromManifest(context); } else { return permissionsToRequest; } }
@Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); final Bundle arguments = getArguments(); if (arguments != null) { final List<String> permissionsArgs = arguments.getStringArrayList(LIST_PERMISSIONS); if (permissionsArgs != null) { permissionsList.addAll(permissionsArgs); } } }
@Override public void subscribe(final FlowableEmitter<PermissionResult> emitter) throws Exception { runtimePermission .request(permissions) .onResponse(new ResponseCallback() { @Override public void onResponse(PermissionResult result) { if (result.isAccepted()) { emitter.onNext(result); } else { emitter.onError(new Error(result)); } } }).ask(); } }, BackpressureStrategy.LATEST);
public void ask(@Nullable ResponseCallback responseCallback) { onResponse(responseCallback) .ask(); }
public RxPermissions(final Fragment fragment) { runtimePermission = RuntimePermission.askPermission(fragment.getActivity()); }
@Override public void subscribe(final MaybeEmitter<PermissionResult> emitter) throws Exception { runtimePermission .request(permissions) .onResponse(new ResponseCallback() { @Override public void onResponse(PermissionResult result) { if (result.isAccepted()) { emitter.onSuccess(result); } else { emitter.onError(new Error(result)); } } }).ask(); } });
@Override public void subscribe(final ObservableEmitter<PermissionResult> emitter) throws Exception { runtimePermission .request(permissions) .onResponse(new ResponseCallback() { @Override public void onResponse(PermissionResult result) { if (result.isAccepted()) { emitter.onNext(result); emitter.onComplete(); } else { emitter.onError(new Error(result)); } } }).ask(); } });