安卓棉花糖位置权限处理



我正在研究Android Marshmallow运行时权限。我要求用户提供位置权限,假设他允许获取位置,我已经开始获取位置,但现在用户拒绝了应用程序设置的权限。现在应用程序已崩溃。我该如何处理它?请帮忙。

这对

我有用!!在应用程序的启动活动中执行以下操作,

注意:如果用户在一段时间后禁用该权限,则这些代码段将不允许进入应用程序而不会发生任何崩溃,它会要求对话框允许所需的权限。

1) 为请求代码声明一个 int 变量,

private static final int REQUEST_CODE_PERMISSION = 2;

2)声明一个带有所需权限名称的字符串,

String mPermission = Manifest.permission.ACCESS_FINE_LOCATION,

3) 接下来检查 onCreate 方法的运行时权限条件,

 try {
                if (ActivityCompat.checkSelfPermission(this, mPermission)
                        != MockPackageManager.PERMISSION_GRANTED) {
                    ActivityCompat.requestPermissions(this,
                            mPermission, REQUEST_CODE_PERMISSION);
                  // If any permission above not allowed by user, this condition will execute every time, else your else part will work
                } 
            } catch (Exception e) {
                e.printStackTrace();
            }

4)现在声明请求权限结果方法来检查请求代码,

@Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        Log.e("Req Code", "" + requestCode);
        if (requestCode == REQUEST_CODE_PERMISSION) {
            if (grantResults.length == 1 &&
                    grantResults[0] == MockPackageManager.PERMISSION_GRANTED ) {
               // Success Stuff here
            }
         else{
               // Failure Stuff
           }
        }
    }
    if (Build.VERSION.SDK_INT >= 23) {
       if (ContextCompat.checkSelfPermission(MainActivity.this, permission) != PackageManager.PERMISSION_GRANTED) {
    //here req again for Permission
    }
}

最新更新