【问题标题】:Put data from text file into HTML Android Webview将文本文件中的数据放入 HTML Android Webview
【发布时间】:2014-07-11 02:56:29
【问题描述】:

找了几天也没找到解决办法。

我不是程序员,但我正在尝试创建一个仅使用条形码阅读器进行搜索的 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文件正确位于asset目录中,应用程序正在运行,搜索工作正常,但问题是我需要将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 和 object,但在此标签内搜索不起作用。我试图用 javascript 找到一些解决方案,但没有得到任何结果。

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

感谢您的帮助,抱歉我的英语不好。

【问题讨论】:

    标签: java javascript android html webview


    【解决方案1】:

    方法如下:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-21
      • 1970-01-01
      • 1970-01-01
      • 2014-01-19
      • 2014-02-28
      • 2012-03-11
      • 1970-01-01
      相关资源
      最近更新 更多