花了几天时间搜索并找不到解决方法。
我不是程序员,但我正在尝试创建一个仅使用条形码阅读器进行搜索的Android应用程序。
取代那些昂贵的支票价格机器的应用程序。只需使用平板电脑和条形码扫描仪,将库存软件生成的文件(通常是带有.txt
扩展名的纯文本文件)复制到microSD卡中(不确定我是否可以通过网络将文件直接发送到卡上) )。
这是带有javascript代码的HTML页面(非常错误且非常糟糕,但同样有效)。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta http-equiv="refresh" content="10">
<title>CONSULTA DE PREÇO</title>
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="expires" content="timestamp">
<script>
var TRange = null;
function Procurar(str) {
if (parseInt(navigator.appVersion) < 4)
return;
var Resultado;
if (window.find) {
Resultado=self.find(str);
if (Resultado && self.getSelection && !self.getSelection().anchorNode) {
Resultado=self.find(str)
}
if (!Resultado) {
Resultado=self.find(str,0,1)
while (self.find(str,0,1))
continue
}
}
else if (navigator.appName.indexOf("Microsoft")!=-1) {
if (TRange!=null) {
TRange.collapse(false)
Resultado=TRange.findText(str)
if (Resultado)
TRange.select()
}
if (TRange==null || Resultado==0) {
TRange=self.document.body.createTextRange()
Resultado=TRange.findText(str)
if (Resultado)
TRange.select()
}
}
if (!Resultado)
alert ("PRODUTO SEM CADASTRO - PROCURE O VENDEDOR")
return;
}
</script>
<style type="text/css">
body {
background-color:blue;
font-family:sans-serif;
overflow-y: hidden
}
body,div,form,.campo {
margin:0;
padding:0;
border:0
}
*:focus {outline: none;}
.cabeca, .barra {
background-color:blue;
color:white;
text-align:center
}
.resultado,#busca,.botao,.campo {
background-color:yellow
}
#busca,.botao {
color:yellow;border:0
}
.campo {
margin-left:5px;
overflow: hidden;
font-weight:bold;
font-size:15px;
font-family:monospace;
color:#000000;
text-transform:uppercase
}
h1 {
font-size: 40px
}
h5 {
font-size: 15px
}
h6 {
font-size: 13px
}
</style>
</head>
<body onload="document.getElementById('busca').focus();">
<div class="cabeca">
<br>
<h1><i>BUSCA PREÇO</i></h1>
<h5><marquee behavior="alternate">PASSE O CÓDIGO DE BARRAS DO PRODUTO SOB O FEIXE DE LUZ</marquee></h5>
</div>
<div class="resultado">
<form id="f1" action="" onsubmit="if(this.t1.value!=null && this.t1.value!='') Procurar(this.t1.value);return false" name="f1">
<input type="text" id="busca" name="t1" value="" size="20"> <input class="botao" type="submit" name="b1" value="Q">
</form>
<form action="">
<textarea class="campo" name="mytextarea" cols="87" rows="3" readonly>
<!-- TXT CONTENT HERE -->
</textarea>
</form>
<br>
</div>
<div class="barra">
<h6>AGUARDE A CONSULTA ANTERIOR APAGAR ANTES DE REALIZAR OUTRA</h6>
</div>
</body>
</html>
这是我的java:
package br.com.strabelli.qc.quantocusta;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class Tela extends Activity {
WebView mwebview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tela);
mwebview = (WebView) findViewById(R.id.webview);
mwebview.loadUrl("file:///android_asset/index.html");
WebSettings webSettings = mwebview.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setBuiltInZoomControls(false);
mwebview.setWebViewClient(new WebViewClient());
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && mwebview.canGoBack()) {
mwebview.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
}
html文件正确位于资产目录中,应用程序正在运行且搜索正常,但问题是我需要注入txt文件的内容(应该位于sdcard中)标签。
txt的内容是这样的
1000177935227 | Figuras de Ontem e de Hoje | 39,00 |
1000177935333 | Poeira Dourada | 40,00 |
1000177935371 | Rui - Pequena Historia de Uma Grande Vida | 15,00 |
9788575183755 | Dicionario Barsa da Lingua Portuguesa | 60,00 |
9788571644694 | Uma Historia da Guerra | 17,00 |
我尝试了iframe和对象,但搜索在此标记内部无效。我试图用javascript找到一些解决方案,但没有得到任何地方。
可以分段生成webview吗?这样:html (...)textarea + terminal.txt + /textarea (...) /html
感谢您的帮助,抱歉我的英语不好。
答案 0 :(得分:0)
这样做的方法如下:
Load the html file from assets in a variable String html.
Load the .txt file from sdcard in a variable String text.
替换文字
html = html.replace("<!-- TXT CONTENT HERE -->", text);
首先使用重载的loadUrl将源html放在webview中。
mwebview.loadUrl(html, ... other parameters...);
或者
mwebview.loadWithBaseUrl(html, ... other parameters ...);
很抱歉目前没有来自内存的确切代码参数。