获取权限变量

时间:2016-04-20 11:40:29

标签: android permissions

我目前正在关注如何获取Android权限的教程。现在,在Android教程中,它说要键入以下内容:

if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this,
                    Manifest.permission.ACCESS_FINE_LOCATION)) {
                GPSExplanation();
            } else {
                ActivityCompat.requestPermissions(MainActivity.this,
                        new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
                        MY_PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION);
            }

        }

但是,我没有得到 MY_PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION 应该做的事情。它说它应该是一个定义为常量的app。我已经安排了1号安慰剂,但我很好奇它实际上起了什么作用,以及为什么必须包括它

有人可以给我一个理由,或示例显示常数有效吗?

提前谢谢。

1 个答案:

答案 0 :(得分:1)

如果您稍后关注the tutorial

  

当您的应用请求权限时,系统会向用户显示一个对话框。当用户响应时,系统会调用您应用的onRequestPermissionsResult()方法,并向其传递用户响应。您的应用必须覆盖该方法才能确定是否已授予权限。回调传递给您传递给requestPermissions()的相同请求代码。例如,如果应用程序请求READ_CONTACTS访问权限,则可能具有以下回调方法:

@Override
public void onRequestPermissionsResult(int requestCode,
    String permissions[], int[] grantResults) {
switch (requestCode) {
    case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
        // If request is cancelled, the result arrays are empty.
        if (grantResults.length > 0
            && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

            // permission was granted, yay! Do the
            // contacts-related task you need to do.

        } else {

            // permission denied, boo! Disable the
            // functionality that depends on this permission.
        }
        return;
    }

    // other 'case' lines to check for other
    // permissions this app might request
}

}

例如,您已请求MY_PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION&在您的应用中MY_PERMISSIONS_REQUEST_READ_CONTACTS,使用此整数常量,您可以针对各个权限采取相应的操作。