我有一个网络服务,我已经添加了条形码阅读器的Android
因此,在JavaScript的帮助下,我从Web视图调用我的条形码阅读器
所以对于I followed this
并在服务器端设计...我已经给了这个
在JavaScript
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>
Android端***Webview中***
webView.addJavascriptInterface(new WebAppInterface(this), "MyApp");
新增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);
}
我的问题是,它的工作在一个单一的HTML/PHP文件与Js在同一页或单独的页面,我已经测试了它的扫描和更新输入框中的值...
但它不工作,因为我在一个网页视图中使用了多个页面或框架...缺少的JS值如何以往任何时候都形式的服务器其打开扫描仪在点击...但是在扫描后,值没有传递到JS的输入框中,我得到了这个错误。
I/chromium: [INFO:CONSOLE(1)] "Uncaught ReferenceError: actfromAnd is not defined", source: (1)
更新
1)我已经尝试了这在静态页面与JS在一边的PHP/HTML页面
2)我也尝试了同样的在一个静态页面与JS分离页
在上述两个条件下,其工作正常
但是在我的Web服务中,我已经给出了相同的JS文件,它在静态页面中成功运行,我有一个JS文件用于我的Web服务和静态页面,它在静态中工作正常,但在我的Web服务中不工作。如何以往任何时候JS是加载,因为在点击它的工作,从JS和它的开放相机,但响应后,扫描它不去网络输入
我知道我犯了错误,因为……
在我的生活页面,我有一个主菜单内的菜单,当我选择一个应用程序,其加载在iframe
所以我的Android活动响应扫描后是ping到主菜单页面,但菜单没有JS功能命名为actfromAnd
所以我得到错误...
在这里我不能给予该特定页面的URL(iframe
),因为取决于它会改变菜单,我可以只给登录或主菜单链接直接。但不是为菜单内的特定页面
有谁能给我推荐一下这类……
3条答案
按热度按时间vq8itlhq1#
将此脚本添加到父菜单的Web服务中,其中包含您的
iframe
或iframes
如果您在多个框架中使用相同的名称,则全局声明您的框架名称
我试过你的代码工作正常...在我的例子框架希望它为您工作的罚款
问得好
k4ymrczo2#
mWebView.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { webview.loadUrl("javascript:myFunction()"); } });
7z5jn7bk3#
只是一个小小的笔记;如果你得到
I/chromium: [INFO:CONSOLE(2)] "ERR [object Object]", source: http://...js
错误,请检查你的链接安全.因为android可能不想运行所有的javascript函数传入不安全的网站。大多数时候,你不应该再在Android中使用不安全的URL。
比如说;
http://example.com--> nonsecure url,您不应该在WebView中使用它
https://example.com-->大多数是安全的URL,您可以尝试在WebView中使用此URL