【发布时间】:2022-01-23 08:46:28
【问题描述】:
我的应用中的一些用户收到此错误:
引起:java.lang.ArrayIndexOutOfBoundsException:在 com.file.gt.MainActivity.onRequestPermissionsResult (MainActivity.java:234) 在 android.app.Activity.requestPermissions (Activity.java:5323) 在 com.file.gt.MainActivity.onCreate (MainActivity.java:85) 在 android.app.Activity.performCreate (Activity.java:8114) 在 android.app.Activity.performCreate (Activity.java:8098) 在 android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1309) 在 android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3480)
它只是偶尔发生,对一些用户来说。
我的应用中有这个:
private final String [] permissions = {
"android.permission.RECORD_AUDIO",
"android.permission.READ_PHONE_STATE"
};
int requestCode = 200;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (checkSelfPermission(permissions[0]) == PackageManager.PERMISSION_DENIED ||
checkSelfPermission(permissions[1]) == PackageManager.PERMISSION_DENIED) {
requestPermissions(permissions, requestCode);
}
}
还有这个:
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if(grantResults[0] == PackageManager.PERMISSION_GRANTED
&& grantResults[1] == PackageManager.PERMISSION_GRANTED) {
recreate(); // 234
}
else {
AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create();
alertDialog.setTitle(getString(R.string.alert_title));
alertDialog.setMessage(getString(R.string.alert_text));
alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
(dialog, which) -> dialog.dismiss());
alertDialog.show();
}
}
任何想法什么是错的,我做错了什么? 谢谢。
【问题讨论】:
-
你知道有一个工具叫做调试器。您甚至可以在 Intellij 等现代 IDE 的调试器中放置条件,以便仅在条件(如越界)适用时在断点处停止。你应该认真去探索调试,因为这是开发人员的一项基本技能
-
@JAsgarov 谢谢,我会学习的。但我知道问题出在哪里,只是不知道我的 onRequestPermissionsResult 上缺少什么。
标签: java android android-studio android-permissions