7

Android ネイティブ ブラウザで開くとアプリを起動する HTML ファイルがありますが、同じものを WebView で開こうとすると、そのアプリケーションを起動できず、「Web ページが利用できません」と表示されます。私のWebViewは、アプリケーション用に定義されたスキーム「my.special.scheme://」を処理できないと思います。

Launching an Android Application from the Browserを読みましたが、WebView からのアプリの起動に関する情報はカバーされていません。

4

3 に答える 3

8

確かに、カスタム URI スキームのリンクはロードされず、WebView からアプリを自動的に起動します。

あなたがする必要があるのは、カスタム WebViewClient を WebView に追加することです:

webView.setWebViewClient(new CustomWebViewClient());

そして、shouldOverrideUrlLoading() に次のコードを含めます。

public boolean shouldOverrideUrlLoading(final WebView webView, final String url) {

    if (url.startsWith("my.special.scheme://")) {

        final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));

        // The following flags launch the app outside the current app
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);

        activity.startActivity(intent);

        return true;
    }  

    return false;
}
于 2014-06-13T04:27:51.783 に答える
4

よくわかりませんが、WebViewは単にカスタムURIスキームを処理しないと思います。

回避策は、 WebViewClient.shouldOverrideUrlLoading()をオーバーライドし、URLがURIスキームを使用しているかどうかを手動でテストし、アプリを起動しtrueて一致する場合は戻り、そうでない場合はを返すことfalseです。

于 2012-06-28T10:48:04.477 に答える