0

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

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

一个用例是:

  1. 用户启动原生安卓应用

  2. 本机 android 应用程序加载 www.mywebsiteaddress.co.uk

  3. 用户浏览 www.mywebsiteaddress.co.uk 并进入页面 www.mywebsiteaddress.co.uk/inputDetails

  4. 用户在文本输入字段中单击

  5. 本机 android 应用程序加载相机

  6. 用户读取条形码

  7. 插入文本输入字段的条形码

  8. 项目清单

第 1 到 3 步我可以做,第 4 到 8 步我需要一些建议,如果这可能的话,有什么想法吗?

非常感谢

4

2 回答 2

2

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

于 2012-08-27T14:33:18.950 回答
0

在您的网页上,您可以实现类似于第 4 步的 javascript 代码:

window.location = 'myApp://message?param=X¶m2=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);
于 2012-05-15T18:36:59.790 回答