3

私はexample.txtファイルのSDカードを持っていて、電話のギャップを使用してそれを表示したいと思います。私はアンドロイドと電話のギャップに非常に慣れていないので助けてください。これが私のexample.txtファイルです:

     <h2>This file is in sdcard</h2>

これが私のphonegap.javaです

    package com.example.phonegap;
    import org.apache.cordova.DroidGap;

     public class Phonegap extends DroidGap{
        /** Called when the activity is first created. */
      @Override
      public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        super.loadUrl("file:///android_asset/www/myfile.html");
       }

    }

wwwのmyfile.htmlは次のとおりです。

       <!DOCTYPE html>
     <html>
     <head>
      <title>FileReader Example</title>

    <script type="text/javascript" charset="utf-8" src="cordova-1.5.0.js"></script>
    <script type="text/javascript" charset="utf-8">

    // Wait for PhoneGap to load
    //
    function onLoad() {
        document.addEventListener("deviceready", onDeviceReady, false);
    }

    // PhoneGap is ready
    //
    function onDeviceReady() {
        window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
    }

    function gotFS(fileSystem) {
        fileSystem.root.getFile("file:///sdcard/example.txt", {create: true}, gotFileEntry, fail);
    }

    function gotFileEntry(fileEntry) {
        fileEntry.file(gotFile, fail);
    }

    function gotFile(file){
        readDataUrl(file);
        readAsText(file);
    }

    function readDataUrl(file) {
        var reader = new FileReader();
        reader.onloadend = function(evt) {
            console.log("Read as data URL");
            console.log(evt.target.result);
        };
        reader.readAsDataURL(file);
    }

    function readAsText(file) {
        var reader = new FileReader();
        reader.onloadend = function(evt) {
            console.log("Read as text");
            console.log(evt.target.result);
        };
        reader.readAsText(file);
    }

    function fail(evt) {
        console.log(evt.target.error.code);
    }

    </script>
  </head>
  <body>
    <h1>Example</h1>
    <p>Read File</p>
  </body>
</html>
4

3 に答える 3

2

この行を変更します。

fileSystem.root.getFile("file:///sdcard/example.txt", {create: true}, gotFileEntry, fail);

これになる:

fileSystem.root.getFile("example.txt", {create: false}, gotFileEntry, fail);

読み取りたいファイルが「example.txt」であり、/sdcard フォルダーにあると仮定します。

于 2012-04-09T15:29:36.817 に答える
2

私も同じ問題に遭遇しました。Phonegap の API ドキュメントが正しいとは思わないので、JavaScript:the definitive guideを参照したところ、次の 2 つの重要なポイントが見つかりました。

  1. 私が読む準備ができているファイルの場所。--> デフォルトの親パスは /mnt/sdcard です。したがって、「/mnt/sdcard/temp/test.txt」ファイルは次のように記述されましたfileSystem.root.getFile("temp/test.txt", null, gotFileEntry, fail)

  2. afterreader.readAsText(file)を使用しただけでelement.innerHTML = reader.result は結果を HTML ファイルに表示できません。だから私はコールバックを追加します:

    reader.onload = function(){
        element.innerHTML = reader.result
    }
    

2 つの部分を調整すると、コードが機能します。

StackOverflow には非常に厳格なアップロード フォーマット ポリシーがあるため、正確なコードをアップロードすることはできません。ただし、私に連絡してコードを尋ねることはできます。

于 2012-05-28T09:22:50.353 に答える
1

example.txt は SD カードのルートにあると仮定します (フォルダには存在しません)。次に、次のコードを変更します。

function gotFS(fileSystem) {
        fileSystem.root.getFile("file:///sdcard/example.txt", {create: true}, gotFileEntry, fail);
    }

function gotFS(fileSystem) {
        fileSystem.root.getFile("example.txt", {create: true}, gotFileEntry, fail);
    }

そして、以下の関数でアラートを使用してみてください。

function readAsText(file) {
        alert("readAstext");
        var reader = new FileReader();
        reader.onloadend = function(evt) {


               console.log("Read as text");
                console.log(evt.target.result);
                alert("content : "+evt.target.result);
            };
            reader.readAsText(file);
}

それでも問題が解決しない場合は、HTML の body タグに以下のコードを追加してください。

 <body onload='onLoad();'>

あなたが直面するかもしれない問題を教えてください。ありがとう、、

于 2013-01-28T04:48:46.357 に答える