From 03423867906c2691972546cde406175d435375cb Mon Sep 17 00:00:00 2001 From: LeonChen Date: Fri, 11 May 2018 11:57:09 +0800 Subject: [PATCH] 1. add autoRequestPermission() API , as usually if app don't have permission we need to request permission,so this API will easy to use. --- .../easypermissions/sample/MainActivity.java | 27 +++++----- .../easypermissions/EasyPermissions.java | 51 +++++++++++++++++++ 2 files changed, 66 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/pub/devrel/easypermissions/sample/MainActivity.java b/app/src/main/java/pub/devrel/easypermissions/sample/MainActivity.java index 4b1ff92..a69340f 100644 --- a/app/src/main/java/pub/devrel/easypermissions/sample/MainActivity.java +++ b/app/src/main/java/pub/devrel/easypermissions/sample/MainActivity.java @@ -16,6 +16,7 @@ package pub.devrel.easypermissions.sample; import android.Manifest; +import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.annotation.NonNull; @@ -39,12 +40,13 @@ public class MainActivity extends AppCompatActivity implements EasyPermissions.P private static final int RC_CAMERA_PERM = 123; private static final int RC_LOCATION_CONTACTS_PERM = 124; + private Context mContext; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); - + mContext = this; // Button click listener that will request one permission. findViewById(R.id.button_camera).setOnClickListener(new View.OnClickListener() { @Override @@ -80,17 +82,18 @@ private boolean hasStoragePermission() { @AfterPermissionGranted(RC_CAMERA_PERM) public void cameraTask() { - if (hasCameraPermission()) { - // Have permission, do the thing! - Toast.makeText(this, "TODO: Camera things", Toast.LENGTH_LONG).show(); - } else { - // Ask for one permission - EasyPermissions.requestPermissions( - this, - getString(R.string.rationale_camera), - RC_CAMERA_PERM, - Manifest.permission.CAMERA); - } + EasyPermissions.autoRequestPermission( + this, + new EasyPermissions.AutoRequestPermissionCallbacks() { + @Override + public void onAutoRequestPermissionGranted() { + // Have permission, do the thing! + Toast.makeText(mContext, "TODO: Camera things", Toast.LENGTH_LONG).show(); + } + }, + getString(R.string.rationale_camera), + RC_CAMERA_PERM, + Manifest.permission.CAMERA); } @AfterPermissionGranted(RC_LOCATION_CONTACTS_PERM) diff --git a/easypermissions/src/main/java/pub/devrel/easypermissions/EasyPermissions.java b/easypermissions/src/main/java/pub/devrel/easypermissions/EasyPermissions.java index bc54efc..89ef04f 100644 --- a/easypermissions/src/main/java/pub/devrel/easypermissions/EasyPermissions.java +++ b/easypermissions/src/main/java/pub/devrel/easypermissions/EasyPermissions.java @@ -64,6 +64,57 @@ public interface RationaleCallbacks { private static final String TAG = "EasyPermissions"; + + /** + * @see #autoRequestPermission( Fragment, AutoRequestPermissionCallbacks, + * String,int,String...) + */ + public static void autoRequestPermission( + @NonNull Activity host, + @NonNull AutoRequestPermissionCallbacks autoRequestPermissionCallbacks, + @NonNull String rationale, + int requestCode, + @Size(min = 1) @NonNull String... perms) { + if (EasyPermissions.hasPermissions(host, perms)) { + autoRequestPermissionCallbacks.onAutoRequestPermissionGranted(); + } else { + // Ask for permission you need + EasyPermissions.requestPermissions(host, rationale, requestCode, perms); + } + } + + /** + * auto request permission if app don't have the permission you need. + * + * @param host requesting context. + * @param autoRequestPermissionCallbacks the call back receive the result + * @param rationale a message explaining why the application needs this set of permissions, will + * be displayed if the user rejects the request the first time. + * @param requestCode request code to track this request, must be < 256. + * @param perms one ore more permissions, such as {@link Manifest.permission#CAMERA}. + */ + public static void autoRequestPermission( + @NonNull Fragment host, + @NonNull AutoRequestPermissionCallbacks autoRequestPermissionCallbacks, + @NonNull String rationale, + int requestCode, + @Size(min = 1) @NonNull String... perms) { + if (EasyPermissions.hasPermissions(host.getContext(), perms)) { + autoRequestPermissionCallbacks.onAutoRequestPermissionGranted(); + } else { + // Ask for permission you need + EasyPermissions.requestPermissions(host, rationale, requestCode, perms); + } + } + + /** + * Callback interface to receive granted event of {@code EasyPermissions.autoRequestPermission()} + * calls. + */ + public interface AutoRequestPermissionCallbacks { + void onAutoRequestPermissionGranted(); + } + /** * Check if the calling context has a set of permissions. *