feat: permission checking dialog

This commit is contained in:
hyb1996 2018-02-04 11:02:07 +08:00
parent 231b11c22b
commit 399cb29dd5
2 changed files with 30 additions and 6 deletions

View File

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

View File

@ -339,4 +339,7 @@
<string name="text_logout">退出登录</string>
<string name="nodebb_error_forbidden">操作失败,请稍后重试</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>