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

Sun*_*tya 6 android android-webview

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

从浏览器中读取了启动Android应用程序,但它没有涵盖有关从WebView启动应用程序的信息.

jkl*_*klp 6

的确,带有自定义URI方案的链接不会自动加载从WebView启动应用程序.

您需要做的是将自定义WebViewClient添加到WebView:

webView.setWebViewClient(new CustomWebViewClient());
Run Code Online (Sandbox Code Playgroud)

然后在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;
}
Run Code Online (Sandbox Code Playgroud)


Dar*_*tle 4

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

解决方法是重写WebViewClient.shouldOverrideUrlLoading()并手动测试 URL 是否使用您的 URI 方案,启动您的应用程序并返回(true如果匹配),否则返回false.