实际上我正在扫描QR码,如果我传递完整信息以生成QR然后扫描它,它工作正常,但如果不插入完整数据生成QR然后扫描该QR,我的应用程序崩溃。我添加了日志报告以及崩溃的代码。我刚刚插入了name和tel3来生成QR,当我扫描它时,它崩溃了
scanDataLength = scanData.length();
parts = scanData.split(":");
semiColons = scanData.split(";");
qrCodeType = parts[0];
if (qrCodeType.contentEquals("MECARD")) {
String name = semiColons[0].split(":")[2];
String adr = semiColons[1].split(":")[1];
String tel = semiColons[2].split(":")[1];
String tel2 = semiColons[3].split(":")[1];
String tel3 = semiColons[4].split(":")[1];
String email = semiColons[5].split(":")[1];
String email2 = semiColons[6].split(":")[1];
String url = semiColons[7].split(":")[1];
String notes = semiColons[8].split(":")[1];
saveContact(name, adre, tel, tel2, tel3, email, email2, url, notes);
}
日志
09-17 14:46:04.369: E/AndroidRuntime(12417): FATAL EXCEPTION: main
09-17 14:46:04.369: E/AndroidRuntime(12417): java.lang.ArrayIndexOutOfBoundsException: length=2; index=2
09-17 14:46:04.369: E/AndroidRuntime(12417): at com.gravity.innovations.qr.manager.ScanQRActivity$2.onPreviewFrame(ScanQRActivity.java:299)
09-17 14:46:04.369: E/AndroidRuntime(12417): at android.hardware.Camera$EventHandler.handleMessage(Camera.java:786)
09-17 14:46:04.369: E/AndroidRuntime(12417): at android.os.Handler.dispatchMessage(Handler.java:99)
09-17 14:46:04.369: E/AndroidRuntime(12417): at android.os.Looper.loop(Looper.java:137)
09-17 14:46:04.369: E/AndroidRuntime(12417): at android.app.ActivityThread.main(ActivityThread.java:5039)
09-17 14:46:04.369: E/AndroidRuntime(12417): at java.lang.reflect.Method.invokeNative(Native Method)
09-17 14:46:04.369: E/AndroidRuntime(12417): at java.lang.reflect.Method.invoke(Method.java:511)
09-17 14:46:04.369: E/AndroidRuntime(12417): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
09-17 14:46:04.369: E/AndroidRuntime(12417): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
09-17 14:46:04.369: E/AndroidRuntime(12417): at dalvik.system.NativeStart.main(Native Method)
09-17 14:46:05.588: I/Process(12417): Sending signal. PID: 12417 SIG: 9
答案 0 :(得分:0)
.split(":")[2];
和
ArrayIndexOutOfBoundsException: length=2; index=2
因此,您只有0和1作为有效索引
答案 1 :(得分:0)
问题与您的数据长度
有关String name = semiColons[0].split(":")[2];
您的semiColons [0]行中没有2列,因此您需要通过在“:”之后添加内容或通过将索引从2更改为1或0来解决此问题