From dbe2ed275c0e649844d3437dda010159a2fe4cbf Mon Sep 17 00:00:00 2001 From: hyb1996 <946994919@qq.com> Date: Tue, 11 Jul 2017 09:14:56 +0800 Subject: [PATCH] fix problem of permission request --- .../stardust/scriptdroid/ui/BaseActivity.java | 19 ++++++++++++++++++- .../scriptdroid/ui/splash/SplashActivity.java | 1 - 2 files changed, 18 insertions(+), 2 deletions(-) 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