繁体   English   中英

将文本文件中的数据放入HTML Android Webview

[英]Put data from text file into HTML Android Webview

经过数天的搜索,未找到解决方案。

我不是程序员,但是我试图创建一个仅使用条形码阅读器进行搜索的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&Ccedil;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&Ccedil;O</i></h1>
    <h5><marquee behavior="alternate">PASSE O C&Oacute;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 &amp;&amp; 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 | Hoje的无花果| 39,00 |

1000177935333 | Poeira Dourada | 40,00 ||

1000177935371 | Rui-Pequena Historia de Uma Grande Vida | 15,00 |

9788575183755 |葡萄牙迪瓜里奥巴萨达林瓜| 60,00 |

9788571644694 | Uma Historia da Guerra | 17,00 ||

我尝试使用iframe和object,但在此代码中无法搜索。 我试图找到一些使用javascript的解决方案,但没有解决。

有可能生成分段的webview吗? 像这样: html (...)textarea + terminal.txt + /textarea (...) /html

感谢您的帮助,对不起我的英语不好。

这样做的方法如下:

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 ...);

很抱歉,目前没有确切的代码参数来自内存。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM