应用程序偶尔会在阅读条形码时崩溃

时间:2013-03-07 13:01:55

标签: android cordova barcode-scanner

我刚开始使用PhoneGap(2.5版),正在开发一款能够读取QR码(最终是NFC标签)的Android应用程序。我正在使用this插件来阅读QR码。我已经设置了一个简单的测试应用程序,其中包含一个用于启动扫描仪的按钮和一个用于显示QR码内容的p-tag。这是启动扫描程序的代码

scan: function() {
    try {
        window.plugins.barcodeScanner.scan( function(args) {
            console.log("Scanner result: \n" +
                "text: " + args.text + "\n" +
                "format: " + args.format + "\n" +
                "cancelled: " + args.cancelled + "\n");
            document.getElementById("info").innerHTML = args.text;
            console.log(args);
        });
    } catch(ex) {
        console.log(ex.message);
    }
}

代码大部分时间都有效,但有时会在读取代码后崩溃(扫描程序捕获标记并报告URL /纯文本/已发现的内容,但在尝试返回时崩溃)我的应用程序)。我发现崩溃没有特定的模式,有时可以扫描相同的代码,有时它会崩溃。以下是来自LogCat的错误消息。

03-07 13:46:57.478: E/AndroidRuntime(28325): FATAL EXCEPTION: main
03-07 13:46:57.478: E/AndroidRuntime(28325): java.lang.RuntimeException: Unable to resume activity {com.package.hellophonegap/com.package.hellophonegap.HelloPhonegap}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=195543262, result=-1, data=Intent { act=com.phonegap.plugins.barcodescanner.SCAN flg=0x80000 (has extras) }} to activity {com.package.hellophonegap/com.package.hellophonegap.HelloPhonegap}: java.lang.NullPointerException
03-07 13:46:57.478: E/AndroidRuntime(28325):    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2742)
03-07 13:46:57.478: E/AndroidRuntime(28325):    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2771)
03-07 13:46:57.478: E/AndroidRuntime(28325):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2235)
03-07 13:46:57.478: E/AndroidRuntime(28325):    at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3692)
03-07 13:46:57.478: E/AndroidRuntime(28325):    at android.app.ActivityThread.access$700(ActivityThread.java:141)
03-07 13:46:57.478: E/AndroidRuntime(28325):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1240)
03-07 13:46:57.478: E/AndroidRuntime(28325):    at android.os.Handler.dispatchMessage(Handler.java:99)
03-07 13:46:57.478: E/AndroidRuntime(28325):    at android.os.Looper.loop(Looper.java:137)
03-07 13:46:57.478: E/AndroidRuntime(28325):    at android.app.ActivityThread.main(ActivityThread.java:5041)
03-07 13:46:57.478: E/AndroidRuntime(28325):    at java.lang.reflect.Method.invokeNative(Native Method)
03-07 13:46:57.478: E/AndroidRuntime(28325):    at java.lang.reflect.Method.invoke(Method.java:511)
03-07 13:46:57.478: E/AndroidRuntime(28325):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
03-07 13:46:57.478: E/AndroidRuntime(28325):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
03-07 13:46:57.478: E/AndroidRuntime(28325):    at dalvik.system.NativeStart.main(Native Method)
03-07 13:46:57.478: E/AndroidRuntime(28325): Caused by: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=195543262, result=-1, data=Intent { act=com.phonegap.plugins.barcodescanner.SCAN flg=0x80000 (has extras) }} to activity {com.package.hellophonegap/com.package.hellophonegap.HelloPhonegap}: java.lang.NullPointerException
03-07 13:46:57.478: E/AndroidRuntime(28325):    at android.app.ActivityThread.deliverResults(ActivityThread.java:3319)
03-07 13:46:57.478: E/AndroidRuntime(28325):    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2729)
03-07 13:46:57.478: E/AndroidRuntime(28325):    ... 13 more
03-07 13:46:57.478: E/AndroidRuntime(28325): Caused by: java.lang.NullPointerException
03-07 13:46:57.478: E/AndroidRuntime(28325):    at org.apache.cordova.DroidGap.onActivityResult(DroidGap.java:849)
03-07 13:46:57.478: E/AndroidRuntime(28325):    at android.app.Activity.dispatchActivityResult(Activity.java:5293)
03-07 13:46:57.478: E/AndroidRuntime(28325):    at android.app.ActivityThread.deliverResults(ActivityThread.java:3315)
03-07 13:46:57.478: E/AndroidRuntime(28325):    ... 14 more

问题是我不知道如何解释错误消息或如何调试应用程序。关于如何进一步解决错误的任何指示都将非常感激。

1 个答案:

答案 0 :(得分:0)

尝试重置手机操作系统。我发现,一旦我这样做,问题就不再发生了。

我不清楚为什么它不能在手机上工作以及实际上导致错误的原因。如果我了解问题是什么,我会更新这篇文章。我唯一能确定的问题是问题是由我手机上的操作系统问题引起的(HTC Desire)。

我应该注意到我安装的Android版本是一个Cyanogen端口,因为由于内存限制,Android 4.2通常不能用于HTC Desires。

如上所述,我在运行Android 4.2的HTC One X上没有遇到这些错误。