Android,通过webview启动意图

时间:2012-05-15 18:15:31

标签: android html webview

我正在尝试实现一些我有一个简单的本机应用程序,其中包含一个webview和一个我在网上托管的网站。

我的想法是我的Android应用程序加载(以及后来的iOS也将受到支持),我将它加载到webview中的网站。但是,其中一个网页上有一个元素,id =“LaunchNativeApp”,当收到onClick时,我想从我的原生应用程序向条形码扫描器启动一个意图。我该怎么做呢?

用例是:

  1. 用户启动原生Android应用

  2. 原生Android应用加载www.mywebsiteaddress.co.uk

  3. 用户导航www.mywebsiteaddress.co.uk并进入页面www.mywebsiteaddress.co.uk/inputDetails

  4. 用户点击文字输入字段

  5. 原生Android应用加载相机

  6. 用户阅读条形码

  7. 条形码已插入文字输入栏

  8. 列出项目

  9. 我可以做的步骤1到3,4到8我需要一些建议,如果有可能的话,是否有任何想法?

    非常感谢

2 个答案:

答案 0 :(得分:2)

您还可以使用addJavascriptInterface(Object,String),以便从javascript调用java对象的方法。你不需要在页面服务器端放置脚本,只需通过调用mWebView.loadUrl(“javascript:{your javascript code here}”)注入一些javascript即可;如果你知道页面中的HTML元素。

答案 1 :(得分:0)

在您的网页上,您可以实施与第4步类似的JavaScript代码:

window.location ='myApp:// message?param = X& param2 = Y';

然后在您的WebView中,您将拥有一个WebViewClient shouldOverrideUrlLoading实现:

mWebView.setWebViewClient(new WebViewClient() 
{

    public boolean shouldOverrideUrlLoading(WebView view, String url)
    {


        // handle myApp links
        if (url.startsWith("myApp"))
        {
            try
            {
                java.net.URI uri = new java.net.URI(url);

                // MESSAGE
                if (uri.getHost().equalsIgnoreCase("message"))
                {
                          // do something here...(e.g. load Camera activity)
                }

            }
            catch (Exception e)
            {
            }

            return (true);
        }

        return (false);
    }

});

您将“隐藏”原始代码中的javascript调用并对其进行响应(例如,加载相机活动等)。

然后,您可以通过回调到页面DOM

将结果返回给WebView
String str = String.format("javascript:{your javascript code here}");
mWebView.loadUrl(str);