我有一个网络服务我已经为android添加了条形码阅读器
所以在JavaScript的帮助下,我从web-view
调用我的条形码阅读器并在服务器端设计...... 我有这个
在JavaScript
java.io.*
在Android端 在网页浏览中
function mybarcd() {
MyApp.mybarcdt();
}
function actfromAnd(msg){
document.getElementById("brcd").value = msg;
}
at HTML/PHP
<div class="data">
<input id="brcd" type="text" value=""/>
<button type="button" onClick="mybarcd()">SCAN</button>
</div>
和新的js界面
webView.addJavascriptInterface(new WebAppInterface(this), "MyApp");
我的问题是它在单个Html / PHP文件中工作正常,在同一页面或单独页面上有Js我测试了它的扫描并在输入框中更新了值...
但由于我在一个webview中使用了多个页面或框架,因此无法正常工作...... 它缺少的JS值......如何在点击时将服务器打开扫描器...但扫描后的值没有传递给JS的输入框我得到这个错误.....
@JavascriptInterface
public void mybarcdt() {
IntentIntegrator intentIntegrator = new IntentIntegrator(Main_A.this);
intentIntegrator.setBeepEnabled(true);
intentIntegrator.setOrientationLocked(true);
intentIntegrator.setPrompt("Scan Barcode");
intentIntegrator.initiateScan();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
if (result != null) {
if (result.getContents() == null) {
Log.d("ScanActivity", "Cancelled scan");
Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show();
} else {
Log.d("ScanActivity", "Scanned");
String bcval = result.getContents();
if (android.os.Build.VERSION.SDK_INT < 19) {
webView.loadUrl("javascript:actfromAnd(\""+bcval+"\")");
}else{
webView.evaluateJavascript("javascript:actfromAnd(\""+bcval+"\")", null);
}
System.out.println("javascript:actfromAnd(\""+bcval+"\")");
}
} else
super.onActivityResult(requestCode, resultCode, data);
}
更新
1)我hava尝试在静态页面中使用JS,在PHP / HTML页面中 2)我也在一个带有JS单独页面的静态页面中尝试过 在上述两个条件下,其工作正常
但是在我的网络服务中,我已经给出了在静态页面中成功运行的Same JS文件,我有一个用于My Webservice和静态页面的单个JS文件,它在静态中工作正常,但在MY webservice live中没有工作..如何JS正在加载因为点击它从JS和它打开的相机的wokring 但是在扫描它不会进入网络输入后进行响应
据我所知,我收到错误因为...
在我的实时页面中我有一个MainMenu Inside菜单当我选择一个应用程序加载到
I/chromium: [INFO:CONSOLE(1)] "Uncaught ReferenceError: actfromAnd is not defined", source: (1)
所以我的Android Activity在扫描后响应是ping到Mainmenu页面但是对于菜单没有名为{的Js函数{1}}所以我收到错误......
在这里,我无法提供该特定页面的网址(iframe
)由于取决于菜单会改变,我可以直接提供仅登录或MainMenu链接。但不能用于特定页面内的菜单
任何人都可以建议我......
答案 0 :(得分:1)
在您的父菜单中的Web服务中添加此脚本,该菜单包含iframe
或iframes
<script>
function actfromAnd(msg){
window.frames['yourExactframe'].document.getElementById("brcd").value = msg;
}
</script>
如果您在多个框架中使用相同的框架,则全局声明您的框架名称
我尝试了你的Code Code Fine ...在我的例子中Frame Hope它适合你
好问题....
答案 1 :(得分:0)
您应该在加载页面时执行javascript
mWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
webview.loadUrl("javascript:myFunction()");
}
});
代码将被执行并找到您的javascript函数。你现在的方式不会等待。