如何处理没有图片:在Android的WebView //链接 [英] How to handle intet:// links in Android webview

查看:185
本文介绍了如何处理没有图片:在Android的WebView //链接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图打开http://链接,将做SSO逻辑黑板协作单点登录

I'm trying to open http:// link that will do single sign on SSO logic for Blackboard Collaborate.

链接将检查验证,如果我验证会将我打开的应用程序。

The link will check for authentication, and if I'm authenticated will forward me to open the app.

在Chrome浏览器中它的正常工作,因为它重定向我到黑板我的设备上安装应用程序。

In Chrome browser it's working fine, as it's redirecting me to Blackboard app installed on my device.

问题是,当我试图打开HTTP://链接的WebView我的应用程序中。该HTTP://链接被重定向到另一个HTTP://然后将链接重定向到的意图:// 的链接。在这种情况下的WebView是显示错误消息(无法找到主机名的意图://blah.blah.blah)

The issue is when I'm trying to open the http:// link in WebView inside my app. The http:// link is redirected to another http:// links then will redirect to intent:// link. In that case the WebView is showing error message (Unable to find host name intent://blah.blah.blah)

下面是我的code,我试图将其设置为例外的意图://的架构别的做一些事情。但我不知道该怎么办!

Here's my code, I'm trying to set an exception for 'intent://' schema to do something else. But I don't know what to do!

public class MyWebViewClient extends WebViewClient {

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {

            // Open Blackboard app
            if (url != null && url.startsWith("intent://")) {
                Log.d("AG_LOG", "intent:// found");
                Intent intent = new Intent();
                intent.setData(Uri.parse(url));
                view.getContext().startActivity(intent);
                return true;
            } else {
                view.loadUrl(url, headers);
                view.setWebChromeClient(new MyChromeClient());
                view.setWebViewClient(new MyWebViewClient());
                return false;
            }
        }
    }

我试过Intent.ACTION_VIEW但不工作的!

I tried Intent.ACTION_VIEW but not worked!

推荐答案

我终于得到了解决:)

public class MyWebViewClient extends WebViewClient {

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {

            // Open Blackboard app
            if (url != null && url.startsWith("intent://")) {
                Log.d("AG_LOG", "intent:// found");
                try {
                    Intent sessionIntnet = Intent.parseUri(url, Intent.URI_INTENT_SCHEME); // Here the MAGIC
                    sessionIntnet.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
                    view.getContext().startActivity(sessionIntnet);
                } catch (URISyntaxException e) {
                    e.printStackTrace();
                    Toast.makeText(MyActivity.this, "Unable to open app!", Toast.LENGTH_LONG).show();
                }
                return true;
            } else {
                view.loadUrl(url, headers);
                view.setWebChromeClient(new MyChromeClient());
                view.setWebViewClient(new MyWebViewClient());
                return false;
            }
        }
    }

新的目的是使用Intent.ParseUri(该parsesed意图的结果),并通过Intent.URI_INTENT_SCHEME作为第二个参数。

The new intent is the result of the parsesed intent using Intent.ParseUri() and pass Intent.URI_INTENT_SCHEME as a second parameter.

这篇关于如何处理没有图片:在Android的WebView //链接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆