【问题标题】:Trigger.io barcode.scan throwing Java errorTrigger.iobarcode.scan 抛出 Java 错误
【发布时间】:2013-01-19 19:25:36
【问题描述】:

在仅包含样板 HTML 和以下 JavaScript 的应用程序中使用 Trigger.io 的 barcode api

forge.barcode.scan(function (value) {
    alert("You scanned: "+value);
});

我在日志中收到以下错误:

Forge Java 错误:RuntimeException:无法在未调用 Looper.prepare() 的线程内创建处理程序

完整的错误条目:

[INFO] D/Forge (1109):返回:{"content":{"message":"Forge Java 错误:RuntimeException:无法在具有 不叫 Looper.prepare()","type":"UNEXPECTED_FAILURE","subtype":null,"full_error":"java.lang.RuntimeException: 无法在尚未调用的线程内创建处理程序 Looper.prepare() 在 android.os.Handler.(Handler.java:197) 在 android.os.Handler.(Handler.java:111) 在 android.app.Dialog.(Dialog.java:107) 在 android.app.AlertDialog.(AlertDialog.java:114) 在 android.app.AlertDialog$Builder.create(AlertDialog.java:931) 在 android.app.AlertDialog$Builder.show(AlertDialog.java:950) 在 io.trigger.forge.android.modules.barcode.API.scan(API.java:68) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:511) 在 io.trigger.forge.android.core.ForgeApp.callJavaFromJavaScript(ForgeApp.java:247) 在 io.trigger.forge.android.core.ForgeJSBridge$1.run(ForgeJSBridge.java:17) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 在 java.lang.Thread.run(Thread.java:856)\n"},"callid":"35E46BC5-1C17-4354-B09B-BE67B5FCD513","status":"error"}

更新:

下面是我的代码:

文件config.json

{
    "config_version": "2",
    "name": "Scan to Web",
    "author": "email@email.com",
    "version": "0.1",
    "platform_version": "v1.4",
    "description": "An empty app created by default",
    "modules": {
        "logging": {
            "level": "DEBUG"
        },
        "barcode": true,
        "contact": true,
        "file": true,
        "is": true,
        "media": true,
        "prefs": true,
        "request": {
            "permissions": ["http://*/*", "https://*/*"]
        },
        "tools": true,
        "reload": true
    }
}

文件default.js

forge.barcode.scan(function (value) {
    alert("You scanned: "+value);
});

文件index.html

<!DOCTYPE html>
<html>
    <head>
    <title>Hello World!</title>
    <link rel="stylesheet" href="css/jquery.mobile-1.1.0.min.css" />
    <script src="js/jquery-1.7.1.min.js"></script>
    <script src="js/jquery.mobile-1.1.0.min.js"></script>
    <script type="text/javascript" src="js/main.js"></script>
    <script type="text/javascript" src="js/default.js"></script>
</head>
<body>

    <p>Hello world!</p>

</body>
</html>

【问题讨论】:

    标签: android trigger.io


    【解决方案1】:

    尝试以下两种方法之一:

    1) 在您的应用配置中打开重新加载模块。我知道这听起来很奇怪或愚蠢,但相信我,它现在应该可以解决你的问题。当 Reload 关闭时,我遇到了与 Request 模块非常相似的问题。

    2) 将 src/config.json 中的“platform_version”从“v1.4”更改为“v1.4.25”。我认为上一个平台版本有点破。

    【讨论】:

    • 已经启用。这是在 config.json 中的 modules 属性下 "reload": true
    • 我昨天遇到了这个问题。这是那些奇怪的错误之一……我打开了 Reload 并且它起作用了。您是否更改了应用程序配置中的任何内容?还是与新创建的应用程序中的一样?
    • 我刚刚在模块下添加了"barcode": true。可以肯定的是,您指的应用配置是src/config.json 对吗?
    • 对。您的应用程序中只有这一段 JS?你能把它贴在你的其余代码的上下文中吗?
    • 很抱歉,重新加载模块的建议帮助我解决了不同模块的问题,但似乎无法解决您的条形码问题。我认为这是从星期四晚上开始的。要尝试的另一件事是将“platform_version”:“v1.4”更改为“platform_version”:“v1.4.25”。
    【解决方案2】:

    Trigger.io 版本 v1.4.26 中存在线程问题 - 在 v1.4.27 以上已修复。

    很抱歉给您带来不便!

    【讨论】:

      【解决方案3】:

      如果您从 UI 线程以外的线程调用与 UI 相关的代码,通常会引发此异常。如果这是 Java,我会使用:

      activity.runOnUiThread(new Runnable()
      {
          @Override
          public void run()
          {
              // place your code here
          }
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-11-19
        • 1970-01-01
        • 2017-03-14
        • 2014-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多