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