0

使用 PhoneGap 我正在使用 Manifest 文件中指定的意图从电子邮件中的链接打开 Android 上的应用程序。这工作正常。

我现在需要做的是将一些数据解析到打开的应用程序中,我从 URL 查询参数中检索的数据,这工作正常我正在读取在 onCreate(Bundle savedInstanceState 中的电子邮件中单击的 URL ) 方法因此:

super.loadUrl("file:///android_asset/www/index.html");
System.out.println("- start intent -");
final Intent intent = getIntent();
if(intent != null && intent.getDataString() != null){
    System.out.println("- data string:"+intent.getDataString());
    String url = intent.getDataString();
    this.sendJavascript("testMethod('"+url+"');");
    System.out.println("- finished method call");
}

如果您查看上面的代码,系统输出都按预期输出,并且数据字符串与预期完全相同,但是我的 index.js 文件中的 testMethod(url) 永远不会被调用。即使我这样做了一个简单的方法

function testMethod(url){
            alert("************************ alert");
            console.log("******************** log")
            console.warn("******************** warn")
            console.info("******************** info")
            console.error("******************** error")
 }

不会发出任何控制台调用或警报。所以对我来说,sendJavascript 方法似乎没有被执行或调用。 我错过了什么吗?

4

1 回答 1

0

最后我根本无法让它发挥作用。我想要实现的是在从 URL 加载应用程序时传递一个值。如果有意图,我通过更改 URL 并将查询参数添加到 loadUrl 来实现这一点。然后在 index.js 中,我检查了 window.location.search,如果像这样找到特定的查询参数,则调用一个额外的函数。

        if(intent != null && intent.getDataString() != null){
        super.loadUrl("file:///android_asset/www/index.html?register=true");
    }
    else{
        super.loadUrl("file:///android_asset/www/index.html");
    }

然后在Javascript中

 if(window.location.search === "?register=true"){
        handleOpenURL("my/url");
    }
于 2012-09-04T08:43:16.880 回答