我正在尝试实现一些我有一个简单的本机应用程序,其中包含一个webview和一个我在网上托管的网站。
我的想法是我的Android应用程序加载(以及后来的iOS也将受到支持),我将它加载到webview中的网站。但是,其中一个网页上有一个元素,id =“LaunchNativeApp”,当收到onClick时,我想从我的原生应用程序向条形码扫描器启动一个意图。我该怎么做呢?
用例是:
用户启动原生Android应用
原生Android应用加载www.mywebsiteaddress.co.uk
用户导航www.mywebsiteaddress.co.uk并进入页面www.mywebsiteaddress.co.uk/inputDetails
用户点击文字输入字段
原生Android应用加载相机
用户阅读条形码
条形码已插入文字输入栏
列出项目
我可以做的步骤1到3,4到8我需要一些建议,如果有可能的话,是否有任何想法?
非常感谢
答案 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
将结果返回给WebViewString str = String.format("javascript:{your javascript code here}");
mWebView.loadUrl(str);