diff --git a/README.md b/README.md index 1ef8a21..6540712 100644 --- a/README.md +++ b/README.md @@ -88,6 +88,11 @@ RxPermissions.getInstance(this) .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 } }); ``` diff --git a/lib/src/main/java/com/tbruyelle/rxpermissions/ShadowActivity.java b/lib/src/main/java/com/tbruyelle/rxpermissions/ShadowActivity.java index 8b01f89..0017e20 100644 --- a/lib/src/main/java/com/tbruyelle/rxpermissions/ShadowActivity.java +++ b/lib/src/main/java/com/tbruyelle/rxpermissions/ShadowActivity.java @@ -26,17 +26,17 @@ protected void onNewIntent(Intent intent) { private void handleIntent(Intent intent) { String[] permissions = intent.getStringArrayExtra("permissions"); + requestPermissions(permissions, 42); + } + + @Override + public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { shouldShowRequestPermissionRationale = new boolean[permissions.length]; for (int i = 0; i < permissions.length; i++) { shouldShowRequestPermissionRationale[i] = shouldShowRequestPermissionRationale(permissions[i]); } - requestPermissions(permissions, 42); - } - - @Override - public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { RxPermissions.getInstance(this).onRequestPermissionsResult(requestCode, permissions, grantResults, shouldShowRequestPermissionRationale); finish(); } diff --git a/sample/src/main/java/com/tbruyelle/rxpermissions/sample/MainActivity.java b/sample/src/main/java/com/tbruyelle/rxpermissions/sample/MainActivity.java index 1795db6..b7e308e 100644 --- a/sample/src/main/java/com/tbruyelle/rxpermissions/sample/MainActivity.java +++ b/sample/src/main/java/com/tbruyelle/rxpermissions/sample/MainActivity.java @@ -9,6 +9,7 @@ import android.widget.Toast; import com.jakewharton.rxbinding.view.RxView; +import com.tbruyelle.rxpermissions.Permission; import com.tbruyelle.rxpermissions.RxPermissions; import java.io.IOException; @@ -35,12 +36,12 @@ protected void onCreate(Bundle savedInstanceState) { RxView.clicks(findViewById(R.id.enableCamera)) // Ask for permissions when button is clicked - .compose(rxPermissions.ensure(Manifest.permission.CAMERA)) - .subscribe(new Action1() { + .compose(rxPermissions.ensureEach(Manifest.permission.CAMERA)) + .subscribe(new Action1() { @Override - public void call(Boolean granted) { - Log.i(TAG, "Permission result " + granted); - if (granted) { + public void call(Permission permission) { + Log.i(TAG, "Permission result " + permission); + if (permission.granted) { releaseCamera(); camera = Camera.open(0); try { @@ -49,7 +50,14 @@ public void call(Boolean granted) { } catch (IOException e) { Log.e(TAG, "Error while trying to display the camera preview", e); } + } else if (permission.shouldShowRequestPermissionRationale) { + // Denied permission without ask never again + Toast.makeText(MainActivity.this, + "Denied permission without ask never again", + Toast.LENGTH_SHORT).show(); } else { + // Denied permission with ask never again + // Need to go to the settings Toast.makeText(MainActivity.this, "Permission denied, can't enable the camera", Toast.LENGTH_SHORT).show();