diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/BaseActivity.java b/app/src/main/java/com/stardust/scriptdroid/ui/BaseActivity.java index 25e61e96..5ad9d5c6 100644 --- a/app/src/main/java/com/stardust/scriptdroid/ui/BaseActivity.java +++ b/app/src/main/java/com/stardust/scriptdroid/ui/BaseActivity.java @@ -2,6 +2,8 @@ package com.stardust.scriptdroid.ui; import android.os.Build; import android.os.Bundle; +import android.support.annotation.CallSuper; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.annotation.RequiresApi; import android.support.v7.app.AppCompatActivity; @@ -26,7 +28,9 @@ import static android.content.pm.PackageManager.PERMISSION_GRANTED; public abstract class BaseActivity extends AppCompatActivity { + protected static final int PERMISSION_REQUEST_CODE = 11186; + private static boolean isRequestingPermissions = false; private BackPressedHandler.Observer mBackPressObserver = new BackPressedHandler.Observer(); @Override @@ -62,9 +66,14 @@ public abstract class BaseActivity extends AppCompatActivity { protected void checkPermission(String... permissions) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (isRequestingPermissions) { + return; + } String[] requestPermissions = getRequestPermissions(permissions); - if (requestPermissions.length > 0) + if (requestPermissions.length > 0) { + isRequestingPermissions = true; requestPermissions(requestPermissions, PERMISSION_REQUEST_CODE); + } } else { int[] grantResults = new int[permissions.length]; Arrays.fill(grantResults, PERMISSION_GRANTED); @@ -72,6 +81,7 @@ public abstract class BaseActivity extends AppCompatActivity { } } + @RequiresApi(api = Build.VERSION_CODES.M) private String[] getRequestPermissions(String[] permissions) { List list = new ArrayList<>(); @@ -112,4 +122,11 @@ public abstract class BaseActivity extends AppCompatActivity { activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); } } + + @CallSuper + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + isRequestingPermissions = false; + } } diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/splash/SplashActivity.java b/app/src/main/java/com/stardust/scriptdroid/ui/splash/SplashActivity.java index 2ebb6a1b..8d2d81cb 100644 --- a/app/src/main/java/com/stardust/scriptdroid/ui/splash/SplashActivity.java +++ b/app/src/main/java/com/stardust/scriptdroid/ui/splash/SplashActivity.java @@ -78,7 +78,6 @@ public class SplashActivity extends BaseActivity { @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); - } @Override