1

私はPhoneGapプロジェクトに取り組んでおり、URLがアプリに渡されたときにhandleOpenURLメソッドを呼び出す簡単なメカニズムを実装しようとしています(この例ではhttp://goo.gl/FKmFL )。悲しいことに、私はいくつかのつまずきに遭遇しました。問題は 2 つあります。

まず、私の呼び出しsendJavascriptはまったく機能していないようでした.JavaScriptへの呼び出しもエラーも何もありません. この機能はアクティビティの開始時に機能しないことを読みましたが、他の誰も問題を抱えていないようです...

2 番目に呼び出すとloadUrl(以下の例を参照)、次のようなエラー メッセージが表示されます。

ReferenceError: Can't find variable: handleOpenURL at undefined:1

以下は私のJavaコードです:

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    super.loadUrl("file:///android_asset/www/index.html");

    final Intent intent = getIntent();

    Log.d("myApp","Start");
    Log.d("myApp","Data string: " + intent.getDataString());

    if(intent.getDataString() != "" && intent.getDataString() != null) {

        Log.d("myApp","Calling handleOpenURL");         
        String url = intent.getDataString();
        // this.sendJavascript("handleOpenURL(\"" + url +"\");");
        super.loadUrl("javascript:handleOpenURL('"+url+"')");
    }
}

以下は私のJavaScriptコードです:

<script>    
    function handleOpenURL(url) {
    $("body").append("<h2>Url:</h2>");
    $("body").append("<p>"+url+"</p>");
}
</script>

あなたが提供できるどんな助けでも大歓迎です!

4

2 に答える 2

1

AndroidでDroidGapを使用すると、まさにこの問題が発生します...

アプリケーションを初めて起動すると、インテント データは DroidGap サブクラス メソッドに表示されますが、使用できるようにデータを Javascript 実行環境に取得する方法はありません。

上記のように sendJavascript 呼び出しを試みましたが、ページの読み込みが完了しておらず、onDeviceReady がまだ起動されていないため、これが失敗したと思われます。

また、CookieManager で Cookie を設定しようとしましたが、うまく動作しませんでした。

データをクエリ文字列に追加します。つまり、super.loadURL("file://..." + "#" + url)

次に、onDeviceReady イベント ハンドラーで location.href を解析するのが最適です。アプリを初めて起動したときは機能しませんが、その後アプリを閉じて強制終了してから起動すると機能します。

残念なことに、InvokeString は Android では機能せず、非推奨になっています。

于 2013-05-23T18:00:39.700 に答える
-1

まず、マイナーな点として、'intent.getDataString() != ""' のチェックは信頼できません。「!intent.getDataString().equals("")」である必要があります。

「setJavaScriptEnabled(true)」への呼び出しが表示されません。これは、これを機能させるための最小要件のようです。

この種の実用的なチュートリアルを見つけてから、アプリケーションに関連する要素を含め始めることができます。

于 2012-10-25T15:22:45.873 に答える