我的应用程序崩溃,如果用户能够通过应用程序的位置权限,然后前往自己手机的设置和禁用权限那里。我试图通过检查通过的onResume的权限固定这一点,但似乎无法得到它的权利。在计算器上其他解决方案都没有奏效。
下面的代码我的onCreate()和检查位置的权限内运行:
if (ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
mMap.setMyLocationEnabled(true);
} else {
//check which API users are running.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
//location permission dialog
requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, MY_PERMISSION_FINE_LOCATION);
}
}
我onRequestPermissionsResult():
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case MY_PERMISSION_FINE_LOCATION:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
mMap.setMyLocationEnabled(true);
}
} else {
Toast.makeText(getContext(), "The app requires location permissions", Toast.LENGTH_LONG).show();
getActivity().finish();
}
break;
}
}
这里是相同的片段中我的onResume()的代码:
@Override
public void onResume() {
super.onResume();
updatePermissions();
if (googleApiClient.isConnected()) {
requestLocationUpdates();
}
}
public void updatePermissions(){
if (ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
// mMap.setMyLocationEnabled(true);
} else {
//check which API users are running.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
//location permission dialog
requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, MY_PERMISSION_FINE_LOCATION);
}
}
}
应用程序崩溃,错误:java.lang.ArrayIndexOutOfBoundsException:长度= 0;索引= 0 fluo.tuki10.fragments.MapFragment.onRequestPermissionsResult(MapFragment.java:232)
这是线
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
我觉得像解决方案是实现一个检查权限的更好的onResume()后用户修改他们的应用程序之外。不幸的是我的代码达不到
一个忠告,它与一个头也不是没有元素比较之前:
如果(grantResults.length> 0)