7

如果我在 Android 本机浏览器中打开它,我有一个 HTML 文件正在启动一个应用程序,但是当我尝试在 WebView 中打开它时,它无法启动该应用程序,并且显示“网页不可用”。我认为我的 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 回答
0

ACTION_VIEW使用 URL 执行 URL 以在默认浏览器中打开 URL,这将重定向到相关的应用程序(我必须通过银行应用程序解决这个与付款有关的问题)

于 2019-05-23T04:46:54.877 回答