RxPermissions introduction,

Source: Internet
Author: User

RxPermissions introduction,

CreateRxPermissionsinstance :

RxPermissions rxPermissions = new RxPermissions(this); // where this is an Activity instance

Example : request the CAMERA permission (with Retrolambda for brevity, but not required)

// Must be done during an initialization phase like onCreaterxPermissions    .request(Manifest.permission.CAMERA)    .subscribe(granted -> {        if (granted) { // Always true pre-M           // I can control the camera now        } else {           // Oups permission denied        }    });

If you need to trigger the permission request from a specific event, you need to setup your event as an observable inside an initialization phase.

You can useJakeWharton/RxBindingto turn your view to an observable (not included in the library).

Example :

// Must be done during an initialization phase like onCreateRxView.clicks(findViewById(R.id.enableCamera))    .compose(rxPermissions.ensure(Manifest.permission.CAMERA))    .subscribe(granted -> {        // R.id.enableCamera has been clicked    });

If multiple permissions at the same time, the result is combined :

rxPermissions    .request(Manifest.permission.CAMERA,             Manifest.permission.READ_PHONE_STATE)    .subscribe(granted -> {        if (granted) {           // All requested permissions are granted        } else {           // At least one permission is denied        }    });

You can also observe a detailed result withrequestEachorensureEach:

rxPermissions .requestEach(Manifest.permission.CAMERA, Manifest.permission.READ_PHONE_STATE) .subscribe(permission -> { // will emit 2 Permission objects if (permission.granted) { // `permission.name` is granted ! } else if (permission.shouldShowRequestPermissionRationale) { // Denied permission without ask never again } else { // Denied permission with ask never again // Need to go to the settings } });

You can also get combined detailed result withrequestEachCombinedorensureEachCombined:

rxPermissions .requestEachCombined(Manifest.permission.CAMERA, Manifest.permission.READ_PHONE_STATE) .subscribe(permission -> { // will emit 1 Permission object if (permission.granted) { // All permissions are granted ! } else if (permission.shouldShowRequestPermissionRationale) // At least one denied permission without ask never again } else { // At least one denied permission with ask never again // Need to go to the settings } });

Look at thesampleapp for more.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.