feat: permission checking dialog
This commit is contained in:
@@ -3,10 +3,13 @@ package com.stardust.scriptdroid.ui.main;
|
||||
import android.Manifest;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.RequiresApi;
|
||||
import android.support.design.widget.FloatingActionButton;
|
||||
import android.support.design.widget.TabLayout;
|
||||
import android.support.v4.app.ActivityCompat;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.view.ViewPager;
|
||||
import android.support.v4.widget.DrawerLayout;
|
||||
@@ -38,6 +41,8 @@ import com.stardust.scriptdroid.ui.main.sample.SampleListFragment_;
|
||||
import com.stardust.scriptdroid.ui.main.scripts.MyScriptListFragment_;
|
||||
import com.stardust.scriptdroid.ui.main.task.TaskManagerFragment_;
|
||||
import com.stardust.theme.ThemeColorManager;
|
||||
import com.stardust.theme.app.ThemeColorMaterialDialog;
|
||||
import com.stardust.theme.dialog.ThemeColorMaterialDialogBuilder;
|
||||
import com.stardust.util.DeveloperUtils;
|
||||
import com.stardust.scriptdroid.tool.AccessibilityServiceTool;
|
||||
import com.stardust.scriptdroid.ui.BaseActivity;
|
||||
@@ -84,6 +89,7 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
checkPermissions();
|
||||
showAccessibilitySettingPromptIfDisabled();
|
||||
mVersionGuard = new VersionGuard(this);
|
||||
showAnnunciationIfNeeded();
|
||||
EventBus.getDefault().register(this);
|
||||
@@ -120,7 +126,6 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
|
||||
|
||||
private void checkPermissions() {
|
||||
checkPermission(Manifest.permission.READ_PHONE_STATE, Manifest.permission.READ_EXTERNAL_STORAGE);
|
||||
showAccessibilitySettingPromptIfDisabled();
|
||||
}
|
||||
|
||||
private void showAccessibilitySettingPromptIfDisabled() {
|
||||
@@ -220,13 +225,29 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
|
||||
@Override
|
||||
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
|
||||
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||
int i = Arrays.asList(permissions).indexOf(Manifest.permission.READ_EXTERNAL_STORAGE);
|
||||
if (i < 0) {
|
||||
return;
|
||||
}
|
||||
if (grantResults[i] == PackageManager.PERMISSION_GRANTED) {
|
||||
if (getGrantResult(Manifest.permission.READ_EXTERNAL_STORAGE, permissions, grantResults) == PackageManager.PERMISSION_GRANTED) {
|
||||
StorageFileProvider.getDefault().notifyStoragePermissionGranted();
|
||||
}
|
||||
|
||||
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_DENIED) {
|
||||
new ThemeColorMaterialDialogBuilder(this)
|
||||
.title(R.string.text_no_phone_state_permission)
|
||||
.content(R.string.info_no_phone_state_permission)
|
||||
.positiveText(R.string.text_request_permission)
|
||||
.negativeText(R.string.text_exit)
|
||||
.cancelable(false)
|
||||
.onPositive(((dialog, which) -> checkPermissions()))
|
||||
.onNegative((dialog, which) -> finish())
|
||||
.show();
|
||||
}
|
||||
}
|
||||
|
||||
private int getGrantResult(String permission, String[] permissions, int[] grantResults) {
|
||||
int i = Arrays.asList(permissions).indexOf(permission);
|
||||
if (i < 0) {
|
||||
return 2;
|
||||
}
|
||||
return grantResults[i];
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user