feat: permission checking dialog
This commit is contained in:
@@ -3,10 +3,13 @@ package com.stardust.scriptdroid.ui.main;
|
|||||||
import android.Manifest;
|
import android.Manifest;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
|
import android.support.annotation.RequiresApi;
|
||||||
import android.support.design.widget.FloatingActionButton;
|
import android.support.design.widget.FloatingActionButton;
|
||||||
import android.support.design.widget.TabLayout;
|
import android.support.design.widget.TabLayout;
|
||||||
|
import android.support.v4.app.ActivityCompat;
|
||||||
import android.support.v4.app.Fragment;
|
import android.support.v4.app.Fragment;
|
||||||
import android.support.v4.view.ViewPager;
|
import android.support.v4.view.ViewPager;
|
||||||
import android.support.v4.widget.DrawerLayout;
|
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.scripts.MyScriptListFragment_;
|
||||||
import com.stardust.scriptdroid.ui.main.task.TaskManagerFragment_;
|
import com.stardust.scriptdroid.ui.main.task.TaskManagerFragment_;
|
||||||
import com.stardust.theme.ThemeColorManager;
|
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.util.DeveloperUtils;
|
||||||
import com.stardust.scriptdroid.tool.AccessibilityServiceTool;
|
import com.stardust.scriptdroid.tool.AccessibilityServiceTool;
|
||||||
import com.stardust.scriptdroid.ui.BaseActivity;
|
import com.stardust.scriptdroid.ui.BaseActivity;
|
||||||
@@ -84,6 +89,7 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
|
|||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
checkPermissions();
|
checkPermissions();
|
||||||
|
showAccessibilitySettingPromptIfDisabled();
|
||||||
mVersionGuard = new VersionGuard(this);
|
mVersionGuard = new VersionGuard(this);
|
||||||
showAnnunciationIfNeeded();
|
showAnnunciationIfNeeded();
|
||||||
EventBus.getDefault().register(this);
|
EventBus.getDefault().register(this);
|
||||||
@@ -120,7 +126,6 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
|
|||||||
|
|
||||||
private void checkPermissions() {
|
private void checkPermissions() {
|
||||||
checkPermission(Manifest.permission.READ_PHONE_STATE, Manifest.permission.READ_EXTERNAL_STORAGE);
|
checkPermission(Manifest.permission.READ_PHONE_STATE, Manifest.permission.READ_EXTERNAL_STORAGE);
|
||||||
showAccessibilitySettingPromptIfDisabled();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showAccessibilitySettingPromptIfDisabled() {
|
private void showAccessibilitySettingPromptIfDisabled() {
|
||||||
@@ -220,13 +225,29 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
|
|||||||
@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);
|
||||||
int i = Arrays.asList(permissions).indexOf(Manifest.permission.READ_EXTERNAL_STORAGE);
|
if (getGrantResult(Manifest.permission.READ_EXTERNAL_STORAGE, permissions, grantResults) == PackageManager.PERMISSION_GRANTED) {
|
||||||
if (i < 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (grantResults[i] == PackageManager.PERMISSION_GRANTED) {
|
|
||||||
StorageFileProvider.getDefault().notifyStoragePermissionGranted();
|
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
|
@Override
|
||||||
|
|||||||
@@ -339,4 +339,7 @@
|
|||||||
<string name="text_logout">退出登录</string>
|
<string name="text_logout">退出登录</string>
|
||||||
<string name="nodebb_error_forbidden">操作失败,请稍后重试</string>
|
<string name="nodebb_error_forbidden">操作失败,请稍后重试</string>
|
||||||
<string name="description_stable_mode">稳定模式通过省略布局细节使脚本抓取布局时更稳定,但同时获取到的屏幕上的控件可能会减少。\n\n重新启动无障碍服务才能生效。</string>
|
<string name="description_stable_mode">稳定模式通过省略布局细节使脚本抓取布局时更稳定,但同时获取到的屏幕上的控件可能会减少。\n\n重新启动无障碍服务才能生效。</string>
|
||||||
|
<string name="text_no_phone_state_permission">获取权限失败 :-(</string>
|
||||||
|
<string name="text_request_permission">重新授予</string>
|
||||||
|
<string name="info_no_phone_state_permission">软件需要显示启动页广告来维持服务器和软件的开发和维护,因此需要\"读取手机状态\"的权限。\n如果您不喜欢广告,可以在设置中设定广告每天只显示一次。</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
Reference in New Issue
Block a user