【问题标题】:Android Marshmallow Location Permission handlingAndroid Marshmallow 位置权限处理
【发布时间】:2016-01-29 03:10:47
【问题描述】:

我正在处理 Android Marshmallow 运行时权限。我向用户询问位置权限,假设他已允许获取位置并且我已经开始获取位置但现在用户拒绝了应用程序设置的权限。现在应用程序崩溃了。我该如何处理?请帮忙。

【问题讨论】:

  • 请分享您的代码和堆栈跟踪。您应该在每次使用此权限时测试您的用户是否允许/拒绝了该权限。

标签: android location runtime-permissions


【解决方案1】:

这对我有用!!!在您的应用程序的 Splash Activity 中执行以下操作,

注意:如果用户在一段时间后禁用该权限,这些代码将不允许在没有任何崩溃的情况下进入应用程序,它会询问一个对话框以允许该所需的权限。

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

@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】:
        if (Build.VERSION.SDK_INT >= 23) {
           if (ContextCompat.checkSelfPermission(MainActivity.this, permission) != PackageManager.PERMISSION_GRANTED) {
        //here req again for Permission
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-05
      • 2017-07-15
      • 2016-11-09
      相关资源
      最近更新 更多