Android Easy Runtime Permissions with Dexter
Android Easy Runtime Permissions with Karumi/Dexter :
1. Dexter Permissions Library :dependencies dependencies { // Dexter runtime permissions implementation 'com.karumi:dexter:4.2.0'}1.1 Requesting Single Permission :To request one permission, you'll use withPermission() methodology by passing the desired permission.
You also want a PermissionListener recall to receive the state of the permission.
> onPermissionGranted() will be called once the permission is granted.> onPermissionDenied() will be called when the permission is denied.Here you will check whether or not the permission is for good denied by mistreatmentresponse.isPermanentlyDenied() condition.
The below code requests CAMERA permission:
Dexter.withActivity(this) .withPermission(Manifest.permission.CAMERA) .withListener(new PermissionListener() { @Override public void onPermissionGranted(PermissionGrantedResponse response) { // permission is granted, open the camera } @Override public void onPermissionDenied(PermissionDeniedResponse response) { // check for permanent denial of permission if (response.isPermanentlyDenied()) { // navigate user to app settings } } @Override public void onPermissionRationaleShouldBeShown(PermissionRequest permission, PermissionToken token) { token.continuePermissionRequest(); } }).check();
To request multiple permissions at an equivalent time, you will use withPermissions() methodology.Below code requests STORAGE and LOCATION permissions.
Dexter.withActivity(this) .withPermissions( Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.ACCESS_FINE_LOCATION) Manifest.permission.ACCESS_FINE_LOCATION) .withListener(new MultiplePermissionsListener() { .withListener(new MultiplePermissionsListener() { @Override @Override public void onPermissionsChecked(MultiplePermissionsReport report) { public void onPermissionsChecked(MultiplePermissionsReport report) { // check if all permissions are granted // check if all permissions are granted if (report.areAllPermissionsGranted()) { if (report.areAllPermissionsGranted()) { // do you work now // do you work now } } // check for permanent denial of any permission if (report.isAnyPermissionPermanentlyDenied()) { if (report.isAnyPermissionPermanentlyDenied()) { // permission is denied permenantly, navigate user to app settings // permission is denied permenantly, navigate user to app settings } } } } @Override public void onPermissionRationaleShouldBeShown(List<PermissionRequest> permissions, PermissionToken token) { public void onPermissionRationaleShouldBeShown(List<PermissionRequest> permissions, PermissionToken token) { token.continuePermissionRequest(); token.continuePermissionRequest(); } } }) }) .onSameThread() .onSameThread() .check(); .check();
You can conjointly catch any errors occurred whereas desegregation the library mistreatmentPermissionRequestErrorListener.You can conjointly catch any errors occurred whereas desegregation the library mistreatmentPermissionRequestErrorListener.
Dexter.withActivity(this) .withPermissions( Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.ACCESS_FINE_LOCATION) .withListener(listener) .withErrorListener(new PermissionRequestErrorListener() { @Override public void onError(DexterError error) { Toast.makeText(getApplicationContext(), "Error occurred! " + error.toString(), Toast.LENGTH_SHORT).show(); } }) .check();Dexter.withActivity(this) .withPermissions( Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.ACCESS_FINE_LOCATION) .withListener(listener) .withErrorListener(new PermissionRequestErrorListener() { @Override public void onError(DexterError error) { Toast.makeText(getApplicationContext(), "Error occurred! " + error.toString(), Toast.LENGTH_SHORT).show(); } }) .check();ow let’s see the way to use dextral in associate example project.
2. Creating New Project1. produce a replacement project in mechanical man Studio from File ⇒ New Project and choose Basic Activity from templates.
2. Add Dexter dependency to your build.gradle
Dexter.withActivity(this) .withPermissions( Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.ACCESS_FINE_LOCATION) .withListener(new MultiplePermissionsListener() { @Override public void onPermissionsChecked(MultiplePermissionsReport report) { // check if all permissions are granted if (report.areAllPermissionsGranted()) { // do you work now } if (report.isAnyPermissionPermanentlyDenied()) { // permission is denied permenantly, navigate user to app settings } } public void onPermissionRationaleShouldBeShown(List<PermissionRequest> permissions, PermissionToken token) { token.continuePermissionRequest(); } }) .onSameThread() .check();
You can conjointly catch any errors occurred whereas desegregation the library mistreatmentPermissionRequestErrorListener.
Dexter.withActivity(this) .withPermissions( Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.ACCESS_FINE_LOCATION) .withListener(listener) .withErrorListener(new PermissionRequestErrorListener() { @Override public void onError(DexterError error) { Toast.makeText(getApplicationContext(), "Error occurred! " + error.toString(), Toast.LENGTH_SHORT).show(); } }) .check();dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:26.1.0' // ... // Dexter runtime permissions implementation 'com.karumi:dexter:4.2.0'}3. Open the layout file of your main activity (activity_main.xml and content_main.xml) and add 2 buttons to check completely different permission ways. |
No comments