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

时间:2014-07-11 02:56:29

标签: java javascript android html 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 | 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

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

1 个答案:

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

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