fix problem of permission request
This commit is contained in:
@@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user