написание и чтение файла .txt с помощью Android на phonegap нужна помощь - PullRequest
2 голосов
/ 06 июля 2011

Привет всем, я очень новичок в PhoneGap .. Я хочу создать файл и записать файл, используя на Android с помощью PhoneGap приведенный ниже код не работает для меня ... Я получил помощь отсюда

это мой File.html , который находится в * android_asset / www / File.html *

 <!DOCTYPE HTML>
    <html>
    <head>
    <meta name="viewport" content="width=320; user-scalable=no" />
    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
    <title>PhoneGap</title>
    <link rel="stylesheet" href="master.css" type="text/css" media="screen"
        title="no title" charset="utf-8">
    <script type="text/javascript" charset="utf-8" src="phonegap.0.9.5.1.js"></script>
    <script type="text/javascript" charset="utf-8" src="main.js"></script>
    <script type="text/javascript" charset="utf-8">

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

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

        function gotFS(fileSystem) {
            fileSystem.root.getFile("test.txt", null, gotFileEntry, fail);
        }

        function gotFileEntry(fileEntry) {
            fileEntry.createWriter(gotFileWriter, fail);
        }

        function gotFileWriter(writer) {
            writer.onwrite = function(evt) {
                console.log("write success");
            };
            writer.write("some sample text");
            // contents of file now 'some sample text'
            writer.truncate(11);
            // contents of file now 'some sample'
            writer.seek(4);
            // contents of file still 'some sample' but file pointer is after the 'e' in 'some'
            writer.write(" different text");
            // contents of file now 'some different text'
        }

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

        </script>

    </head>
    <body>
    <h1>Example</h1>
    <p>Write File</p>

    </body>
    </html>

это мой класс

public class testfileActivity extends DroidGap {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
//        setContentView(R.layout.main);
        super.init();
        super.loadUrl("file:///android_asset/www/File.html");
    }
}

logcat показывает вот так

07-06 13:15:10.732: DEBUG/ddm-heap(356): Got feature list request
07-06 13:15:10.742: DEBUG/dalvikvm(30): GC freed 283 objects / 10848 bytes in 278ms
07-06 13:15:10.922: DEBUG/dalvikvm(30): GC freed 45 objects / 2008 bytes in 160ms
07-06 13:15:11.103: DEBUG/dalvikvm(30): GC freed 2 objects / 48 bytes in 119ms
07-06 13:15:11.593: INFO/System.out(356): Native Geolocation not supported - we're ok
07-06 13:15:11.602: INFO/System.out(356): loadUrl(file:///android_asset/www/File.html)
07-06 13:15:11.622: INFO/System.out(356): url=file:///android_asset/www/File.html baseUrl=file:///android_asset/www
07-06 13:15:11.731: WARN/InputManagerService(51): Starting input on non-focused client com.android.internal.view.IInputMethodClient$Stub$Proxy@438c1e70 (uid=10001 pid=95)
07-06 13:15:11.792: INFO/ActivityManager(51): Displayed activity android.com.testfile/.testfileActivity: 1429 ms (total 1429 ms)
07-06 13:15:16.982: DEBUG/dalvikvm(217): GC freed 732 objects / 64408 bytes in 85ms

и это разрешение я добавил в AndroidManifest.xml

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

что мне не хватает или что здесь не так ... пожалуйста, помогите мне заранее спасибо - Pragna

1 Ответ

3 голосов
/ 17 октября 2011

Я думаю, что в примере PhoneGap отсутствует что-то важное.Эта строка прямо здесь:

fileSystem.root.getFile("test.txt", null, gotFileEntry, fail);

Загрузит его, только если файл существует, попробуйте обновить его следующим образом:

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

, который создаст его, если он еще не существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...