Commit 52fdfbb0 authored by fallenstardust's avatar fallenstardust

统一权限设置引导dialog

parent 57b863cf
...@@ -22,6 +22,7 @@ import java.util.ArrayList; ...@@ -22,6 +22,7 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import cn.garymb.ygomobile.lite.R; import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.ui.plus.DialogPlus;
import cn.garymb.ygomobile.utils.FileLogUtil; import cn.garymb.ygomobile.utils.FileLogUtil;
/** /**
...@@ -52,7 +53,7 @@ public class PermissionsActivity extends AppCompatActivity { ...@@ -52,7 +53,7 @@ public class PermissionsActivity extends AppCompatActivity {
ActivityCompat.startActivityForResult(activity, intent, requestCode, null); ActivityCompat.startActivityForResult(activity, intent, requestCode, null);
return true; return true;
} }
return false; return false;
} }
@Override @Override
...@@ -60,7 +61,7 @@ public class PermissionsActivity extends AppCompatActivity { ...@@ -60,7 +61,7 @@ public class PermissionsActivity extends AppCompatActivity {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
if (getIntent() == null || !getIntent().hasExtra(EXTRA_PERMISSIONS)) { if (getIntent() == null || !getIntent().hasExtra(EXTRA_PERMISSIONS)) {
allPermissionsGranted(); allPermissionsGranted();
}else { } else {
mChecker = PermissionsChecker.getPermissionsChecker(this); mChecker = PermissionsChecker.getPermissionsChecker(this);
isRequireCheck = true; isRequireCheck = true;
} }
...@@ -114,17 +115,17 @@ public class PermissionsActivity extends AppCompatActivity { ...@@ -114,17 +115,17 @@ public class PermissionsActivity extends AppCompatActivity {
allPermissionsGranted(); allPermissionsGranted();
} else { } else {
isRequireCheck = false; isRequireCheck = false;
showMissingPermissionDialog(getNoPermission(permissions,grantResults)); showMissingPermissionDialog(getNoPermission(permissions, grantResults));
} }
} }
//获取未同意的权限 //获取未同意的权限
private List<String> getNoPermission(String[] permissions, int[] grantResults){ private List<String> getNoPermission(String[] permissions, int[] grantResults) {
List<String> permissionList=new ArrayList<>(); List<String> permissionList = new ArrayList<>();
for (int i=0;i<grantResults.length;i++) { for (int i = 0; i < grantResults.length; i++) {
int grantResult = grantResults[i]; int grantResult = grantResults[i];
if (grantResult == PackageManager.PERMISSION_DENIED) { if (grantResult == PackageManager.PERMISSION_DENIED) {
permissionList.add(permissions[i]); permissionList.add(permissions[i]);
} }
} }
return permissionList; return permissionList;
...@@ -141,34 +142,31 @@ public class PermissionsActivity extends AppCompatActivity { ...@@ -141,34 +142,31 @@ public class PermissionsActivity extends AppCompatActivity {
} }
// 显示缺失权限提示 // 显示缺失权限提示
private void showMissingPermissionDialog(List<String > permissionList) { private void showMissingPermissionDialog(List<String> permissionList) {
AlertDialog.Builder builder = new AlertDialog.Builder(PermissionsActivity.this); DialogPlus builder = new DialogPlus(PermissionsActivity.this);
builder.setTitle(R.string.help); builder.setTitle(R.string.tip);
String noPermission=""; String noPermission = "";
for (String s:permissionList) for (String s : permissionList)
noPermission+="\n"+s; noPermission += "\n" + s;
builder.setMessage(getString(R.string.string_help_text)+noPermission); builder.setMessage(getString(R.string.string_help_text) + noPermission);
// 拒绝, 退出应用 // 拒绝, 退出应用
builder.setNegativeButton(R.string.quit, new DialogInterface.OnClickListener() { builder.setLeftButtonText(R.string.quit);
builder.setLeftButtonListener(new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
setResult(PERMISSIONS_DENIED); setResult(PERMISSIONS_DENIED);
finish(); finish();
} }
}); });
builder.setRightButtonText(R.string.settings);
builder.setPositiveButton(R.string.settings, new DialogInterface.OnClickListener() { builder.setRightButtonListener(new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
startAppSettings(); startAppSettings();
} }
}); });
Dialog dialog = builder.show(); builder.show();
dialog.setCanceledOnTouchOutside(false);
dialog.setOnCancelListener((v) -> {
finish();
});
} }
// 启动应用的设置 // 启动应用的设置
...@@ -186,13 +184,13 @@ public class PermissionsActivity extends AppCompatActivity { ...@@ -186,13 +184,13 @@ public class PermissionsActivity extends AppCompatActivity {
*/ */
class PermissionsChecker { class PermissionsChecker {
private final Context mContext; private final Context mContext;
private static PermissionsChecker sPermissionsChecker; private static PermissionsChecker sPermissionsChecker;
public static PermissionsChecker getPermissionsChecker(Context context) { public static PermissionsChecker getPermissionsChecker(Context context) {
if(sPermissionsChecker==null){ if (sPermissionsChecker == null) {
synchronized (PermissionsChecker.class){ synchronized (PermissionsChecker.class) {
if(sPermissionsChecker==null){ if (sPermissionsChecker == null) {
sPermissionsChecker=new PermissionsChecker(context); sPermissionsChecker = new PermissionsChecker(context);
} }
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment