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

7
我有一个HTML文件,如果我在Android原生浏览器中打开它,它会启动一个应用程序, 但是当我尝试在WebView中打开相同的文件时,它无法启动该应用程序,并显示“网页不可用”。 我认为我的WebView无法处理应用程序定义的“my.special.scheme://”方案。 我阅读了从浏览器启动Android应用程序,但它没有涵盖有关从WebView启动应用程序的信息。
3个回答

8

确实,带有自定义URI方案的链接不会自动加载WebView中的应用程序。

您需要做的是在WebView中添加一个自定义WebViewClient:

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;
}

4
我不确定,但我认为WebView无法处理自定义的URI方案。
解决方法是重写WebViewClient.shouldOverrideUrlLoading()并手动测试URL是否使用您的URI方案,如果匹配则启动您的应用程序并返回true,否则返回false

0

我使用URL执行ACTION_VIEW,以便在默认浏览器中打开URL,浏览器将重定向到相关应用程序(我需要通过银行应用修复有关付款的问题)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接