2
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    super.loadUrl("file:///android_asset/www/index.html");

    final String invokeString = getIntent().getDataString();
    if(invokeString != "" && invokeString != null) {
        this.sendJavascript("handleOpenURL('" + invokeString + "');");
        System.out.println(invokeString);
    }
}

私はこのウェブサイトでこのコードを見つけました: http://blog.cttapp.com/p/phonegap-handleopenurl-for-android/ .

それは handleOpenURL を実行しません。それ以外の場合はページをリダイレクトするため、私はこれを知っています。

4

2 に答える 2

6

私も同じ問題を抱えていました。webview はまだ準備ができていないようです。

これを機能させる方法は次のとおりです。関数をオーバーライドします。onMessageそれまでにあなたの話を聞く準備ができているようです。

@Override
public Object onMessage(String id, Object obj) {

    if (id.equals("onPageStarted")) {

        final Intent intent = getIntent();
        if(intent.getDataString()!= "" && intent.getDataString()!= null){
            String url = intent.getDataString();
            this.sendJavascript("handleOpenURL('" + url + "');");
        }

    }
    return super.onMessage(id, obj);
}

この解決策はこちらで見つかりました。

于 2012-12-06T19:52:20.163 に答える
0

私は同じ問題に遭遇し、自分で Cordova を構築したくない人のために、もっと悪い (私が知る限り) 解決策を共有したいと思いました...

列の直前

this.sendJavascript("handleOpenURL('" + url + "');");

これを追加

try{
    Thread.sleep(5000);
   } catch (Exception e) {
   // nothing
   }

これが最適ではないことは承知していますが、Cordova 自体を拡張する時間がありませんでした...

また、上記の(はるかに優れた)回答のリンクには少し情報が欠けているため(ソリューションスレッドの一部のフォーラムメッセージが削除されました)、onMessageをオーバーライドする必要があるファイルを次に示します...頑張ってください!

于 2013-05-31T19:52:04.217 に答える