我目前正在关注如何获取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号安慰剂,但我很好奇它实际上起了什么作用,以及为什么必须包括它
有人可以给我一个理由,或示例显示常数有效吗?
提前谢谢。
答案 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
,使用此整数常量,您可以针对各个权限采取相应的操作。