通过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导致,程序崩溃。
问题解决,仅供参考。