授予Android权限 - 未知值

时间:2017-05-28 09:28:18

标签: java android permissions

前段时间我通过互联网上的一些教程为我的应用添加了关于“精确定位”的许可。一切都像我想要的那样,但我对一条无法解释的线路有疑问:

private static final int MY_PERMISSION_REQUEST_FINE_LOCATION = 101; 

为什么价值101?为什么不是102或200?

private static final int MY_PERMISSION_REQUEST_FINE_LOCATION = 101;

   public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;

        if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION)
                != PackageManager.PERMISSION_GRANTED &&
                ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION)
                        != PackageManager.PERMISSION_GRANTED) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                requestPermissions(new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION},
                        MY_PERMISSION_REQUEST_FINE_LOCATION);

            } else {

            }
            return;
        }

public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    switch (requestCode) {
        case MY_PERMISSION_REQUEST_FINE_LOCATION:
            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {


                if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION)
                        != PackageManager.PERMISSION_GRANTED &&
                        ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION)
                                != PackageManager.PERMISSION_GRANTED) {

                    return;
                }
                LatLng position = new LatLng(0, 0);


            } else {

                close();
            }

    }

}

2 个答案:

答案 0 :(得分:0)

你可以给它你想要的值。值得做的就是onRequestPermissionResult来抓住requestCode

答案 1 :(得分:0)

requestPermissions()的文档中,它表示requestCode适用于

  

特定于应用程序的请求代码与报告的结果相匹配   onRequestPermissionsResult(int,String [],int [])。应该是> = 0。

这意味着您将此代码明确指定为您想要的任何值,然后您可以使用此值检查您的请求是否在回调onRequestPermissionsResult中成功。例如,将此代码放在您的Activity中:

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    switch (requestCode) {
        case 101:
            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                //granted
            } else {
                //not granted
            }
            break;
        default:
            super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    }
}

回到你的问题,你可以使用102,或200,或任何你想要的值。但是,您应该始终使用requestPermissions方法中提供的相同代码检查请求是否成功。