Android棉花糖位置权限处理

Android棉花糖位置权限处理,android,location,runtime-permissions,Android,Location,Runtime Permissions,我正在使用Android棉花糖运行时权限。我向用户请求位置权限,假设他已允许获取位置,而我已开始获取位置,但现在用户已拒绝应用程序设置的权限。现在应用程序崩溃了。我怎么办?请帮忙。这是为我工作的!!!在应用程序的启动活动中,执行以下操作: if (Build.VERSION.SDK_INT >= 23) { if (ContextCompat.checkSelfPermission(MainActivity.this, permission) != PackageMa

我正在使用Android棉花糖运行时权限。我向用户请求位置权限,假设他已允许获取位置,而我已开始获取位置,但现在用户已拒绝应用程序设置的权限。现在应用程序崩溃了。我怎么办?请帮忙。

这是为我工作的!!!在应用程序的启动活动中,执行以下操作:

    if (Build.VERSION.SDK_INT >= 23) {
       if (ContextCompat.checkSelfPermission(MainActivity.this, permission) != PackageManager.PERMISSION_GRANTED) {
    //here req again for Permission
    }
}
注意:如果用户在一段时间后禁用了权限,这些代码将不允许进入应用程序而不发生任何崩溃,它会请求一个对话框来允许所需的权限

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

private static final int REQUEST_CODE_PERMISSION = 2;
@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
           }
        }

    }
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现在声明onRequestPermissionsResult方法以检查请求代码

private static final int REQUEST_CODE_PERMISSION = 2;
@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
           }
        }

    }

这是为我工作!!!在应用程序的启动活动中,执行以下操作:

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

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

private static final int REQUEST_CODE_PERMISSION = 2;
@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
           }
        }

    }
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现在声明onRequestPermissionsResult方法以检查请求代码

private static final int REQUEST_CODE_PERMISSION = 2;
@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
           }
        }

    }

请共享您的代码和堆栈跟踪。每次使用此权限时,都应测试用户是否允许/拒绝了权限。请参阅共享代码和堆栈跟踪。每次使用此权限时,应测试用户是否允许/拒绝了权限。请参阅