0

PhoneGap を使用して、マニフェスト ファイルで指定されたインテントを使用して、電子メールのリンクから Android でアプリケーションを開いています。これはうまくいっています。

私が今しなければならないことは、開いているアプリケーションへのいくつかのデータを解析することです。データは URL クエリ パラメータから取得しています。これは正常に機能しています。onCreate(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 メソッドが実行または呼び出されていないようです。 何か不足していますか?

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 に答える