Android打开当前应用的授权页面

打开当前应用的授权页面

1.背景介绍

Android6.0(API23)以后, 一个很显著的变化,就是都需要我们获取权限不再像以前那么简单, 只需要在AndroidManifest.xml文件中配置即可,而是多了一个动态权限的概念。 像读写SD卡、发送短信等权限都划分为了敏感权限,系统会自动检测到,并给用户提示选择。有时候, 如果用户拒绝了我们的权限, APP的某些功能可能就无法实现了。这个时候, 引导用户去设置权限就很重要。

2.代码实现

以下是在实战中所使用的代码, 提供参考:

public static void showDialog(final Context context) {
    //TODO 首先检查是否有权限, 有权限直接读写, 没有权限 拉起权限
    //有权限  跳过拉起设置权限步骤
    //没有权限 走以下步骤

    AlertDialog.Builder builder = new AlertDialog.Builder(context);

    builder.setTitle("友情提示");
    builder.setMessage("您目前还没有给游戏 在手机上写数据的权限, 可能会导致游戏数据丢失, 建议开启该权限");
    builder.setPositiveButton("去开启", new OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            simpleSetting(context);

        }
    }).
    setNegativeButton("取消", new OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            // TODO Auto-generated method stub

        }
    });

    AlertDialog dialog = builder.show();
    dialog.setCanceledOnTouchOutside(false);
}


public static void simpleSetting(Context context) {
     Intent intent = new Intent();
     try{
         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         Log.e("HLQ_Struggle", "******************当前手机型号为:" + getMobileType());
      // 将用户引导到系统设置页面
         if (Build.VERSION.SDK_INT >= 9) {
             Log.e("HLQ_Struggle", "APPLICATION_DETAILS_SETTINGS");
             intent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
             intent.setData(Uri.fromParts("package", context.getPackageName(), null));
         } else if (Build.VERSION.SDK_INT <= 8) {
             intent.setAction(Intent.ACTION_VIEW);
             intent.setClassName("com.android.settings", "com.android.settings.InstalledAppDetails");
             intent.putExtra("com.android.settings.ApplicationPkgName", context.getPackageName());
         } 
         context.startActivity(intent);
     } catch (Exception e) {//抛出异常就直接打开设置页面
         Log.e("HLQ_Struggle", e.getLocalizedMessage());
         intent = new Intent(Settings.ACTION_SETTINGS);
         context.startActivity(intent);
     }
}

你可能感兴趣的:(android应用)