phonegap将传入的数据解析为应用程序

时间:2012-09-03 11:56:37

标签: android cordova android-intent

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

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

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方法。 我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

最后我根本无法使用它。我想要实现的是在从URL加载应用程序时传递值。如果有意图并将查询参数添加到loadUrl,我可以通过更改URL来实现此目的。然后在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");
    }