通过UMENG日志最近发现一个崩溃的日志记录:
Caused by: java.lang.IndexOutOfBoundsException: IndexOutOfBoundsException in AGET
at com.pkgname.MainActivity.onRequestPermissionsResult(Native Method)
经过仔细排查,判断应该是andriod6.0以上系统在动态获取授权后,回调过程中用户拒绝了授权导致的。其中动态获取授权回调代码为:
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode){
case REQUEST_CODE_ASK_CAMERA:
if(grantResults[0] == PackageManager.PERMISSION_GRANTED){
//Log.e("手动授权成功");
}else{
//Log.e("手动授权禁止");
DialogUtils.dialogInfoShow(mContext,"您禁止了获取使用相机的权限");
}
break;
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}将其修改为:
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode){
case REQUEST_CODE_ASK_CAMERA:
if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
//Log.e("手动授权成功");
}else{
//Log.e("手动授权禁止");
DialogUtils.dialogInfoShow(mContext,"您禁止了获取使用相机的权限");
}
break;
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}其中的if(grantResults[0] == PackageManager.PERMISSION_GRANTED)
修改为if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
防止用户手动禁止授权时grantResults数组长度为0导致,程序崩溃。
问题解决,仅供参考。
