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.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<String> 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;
}
}

View File

@ -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