2

我刚刚开始使用 PhoneGap(2.5 版),并且正在开发一个能够读取 QR 码(以及最终 NFC 标签)的 Android 应用程序。我正在使用这个插件来读取二维码。我已经设置了一个简单的测试应用程序,其中包含一个启动扫描仪的按钮和一个用于显示 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

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

4

1 回答 1

0

尝试将手机操作系统恢复出厂设置。我发现一旦我这样做了,问题就不再发生了。

我不知道为什么它不能在手机上工作以及实际上是什么导致了错误。如果我明白问题所在,我会更新这篇文章。我几乎可以肯定的唯一一件事是问题是由我手机上的操作系统问题引起的(HTC Desire)。

我应该注意,我安装的 Android 版本是 Cyanogen 端口,因为由于内存限制,Android 4.2 通常无法在 HTC Desires 上运行。

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

于 2013-03-19T23:06:29.743 回答