fix problem of permission request

This commit is contained in:
hyb1996
2017-07-11 09:14:56 +08:00
parent 21aabbbd3f
commit dbe2ed275c
2 changed files with 18 additions and 2 deletions

View File

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

View File

@@ -78,7 +78,6 @@ public class SplashActivity extends BaseActivity {
@Override @Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults); super.onRequestPermissionsResult(requestCode, permissions, grantResults);
} }
@Override @Override