从WebView启动自定义Android应用程序

从WebView启动自定义Android应用程序,android,android-webview,Android,Android Webview,我有一个HTML文件,如果我在Android本机浏览器中打开它,它将启动一个应用程序, 但当我尝试在WebView中打开相同的应用程序时,它无法启动该应用程序,并且会显示“网页不可用”。我认为我的WebView无法处理为应用程序定义的方案“my.special.scheme://” 我读过,但它没有涵盖从WebView启动应用程序的信息。我不确定,但我相信WebView根本不处理自定义URI方案 解决方法是覆盖并手动测试URL是否使用您的URI方案,启动您的应用程序并返回true,如果匹配,否则

我有一个HTML文件,如果我在Android本机浏览器中打开它,它将启动一个应用程序, 但当我尝试在WebView中打开相同的应用程序时,它无法启动该应用程序,并且会显示“网页不可用”。我认为我的WebView无法处理为应用程序定义的方案“my.special.scheme://”


我读过,但它没有涵盖从WebView启动应用程序的信息。

我不确定,但我相信WebView根本不处理自定义URI方案


解决方法是覆盖并手动测试URL是否使用您的URI方案,启动您的应用程序并返回
true
,如果匹配,否则返回
false

如果是,具有自定义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;
}

我使用URL执行
操作\u视图
,使URL在默认浏览器中打开,这将重定向到相关应用程序(我必须通过银行应用程序解决此有关付款的问题)