From 399cb29dd5657c8537ea1f159586e8ec82d284a4 Mon Sep 17 00:00:00 2001
From: hyb1996 <946994919@qq.com>
Date: Sun, 4 Feb 2018 11:02:07 +0800
Subject: [PATCH] feat: permission checking dialog
---
.../scriptdroid/ui/main/MainActivity.java | 33 +++++++++++++++----
app/src/main/res/values/strings.xml | 3 ++
2 files changed, 30 insertions(+), 6 deletions(-)
diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/main/MainActivity.java b/app/src/main/java/com/stardust/scriptdroid/ui/main/MainActivity.java
index dfadbfa5..71c55869 100644
--- a/app/src/main/java/com/stardust/scriptdroid/ui/main/MainActivity.java
+++ b/app/src/main/java/com/stardust/scriptdroid/ui/main/MainActivity.java
@@ -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
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index e13a7c97..922c8c8b 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -339,4 +339,7 @@
退出登录
操作失败,请稍后重试
稳定模式通过省略布局细节使脚本抓取布局时更稳定,但同时获取到的屏幕上的控件可能会减少。\n\n重新启动无障碍服务才能生效。
+ 获取权限失败 :-(
+ 重新授予
+ 软件需要显示启动页广告来维持服务器和软件的开发和维护,因此需要\"读取手机状态\"的权限。\n如果您不喜欢广告,可以在设置中设定广告每天只显示一次。