前段时间我通过互联网上的一些教程为我的应用添加了关于“精确定位”的许可。一切都像我想要的那样,但我对一条无法解释的线路有疑问:
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();
}
}
}
答案 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
方法中提供的相同代码检查请求是否成功。