0

編集:提案された解決策を実装しようとしたときにエラーが発生しています。以下の追加情報をご覧ください。よろしければ、よろしくお願いします!

さて、ついにアプリケーションを作成してファイルに書き込むことができました。

エミュレーターでは、これは完全に機能します。ただし、アプリケーションを自分の電話にアップロードして、自分の電話で試しadb shellてみると。ファイルが含まれている電話のディレクトリにアクセスできません。

ディレクトリは/data/data/cpe495.smartapp/files/です。ディレクトリを変更しようとすると、権限がないことがわかります。

これは、電話がルート化されておらず、ルートアカウントにないためだと思います。私の電話を応援することは私がやろうとしていることではありません。

このファイルを作成して書き込み、携帯電話から書き込める方法はありますadb pullか?これが私がファイルを作成している現在の方法です:

fOut = tThis.openFileOutput("test.csv", tThis.MODE_APPEND);

前もって感謝します!!

まだ動作していません

次のコードをアプリケーションに追加しました。実行すると、ファイルをsdcardに書き込もうとすると、次のエラーで失敗します。サポートしてください。

                      String inFileName = "/data/data/cpe495.smartapp/files/test.csv"; //TODO Use folder/filename
                      File inFile = new File(inFileName);
                      try{
                      FileInputStream fis = new FileInputStream(inFile);

                      String outFileName = Environment.getExternalStorageDirectory()+"/test.csv"; //TODO Use output filename
                      OutputStream output = new FileOutputStream(outFileName);

                      byte[] buffer = new byte[1024];
                      int length;
                      while ((length = fis.read(buffer))>0)
                        output.write(buffer, 0, length);

                      output.flush();
                      output.close();
                      fis.close();
                      } catch (Exception e) {
                          e.printStackTrace();
                      }   

04-05 23:20:11.551: WARN/System.err(285): java.io.FileNotFoundException: /mnt/sdcard/test.csv (Permission denied)
04-05 23:20:11.582: WARN/System.err(285):     at org.apache.harmony.luni.platform.OSFileSystem.openImpl(Native Method)
04-05 23:20:11.593: WARN/System.err(285):     at org.apache.harmony.luni.platform.OSFileSystem.open(OSFileSystem.java:152)
04-05 23:20:11.601: WARN/System.err(285):     at java.io.FileOutputStream.<init>(FileOutputStream.java:97)
04-05 23:20:11.601: WARN/System.err(285):     at java.io.FileOutputStream.<init>(FileOutputStream.java:168)
04-05 23:20:11.612: WARN/System.err(285):     at java.io.FileOutputStream.<init>(FileOutputStream.java:147)
04-05 23:20:11.622: WARN/System.err(285):     at cpe495.smartapp.SmartApp$8.onClick(SmartApp.java:162)
04-05 23:20:11.622: WARN/System.err(285):     at android.view.View.performClick(View.java:2408)
04-05 23:20:11.632: WARN/System.err(285):     at android.view.View$PerformClick.run(View.java:8816)
04-05 23:20:11.632: WARN/System.err(285):     at android.os.Handler.handleCallback(Handler.java:587)
04-05 23:20:11.642: WARN/System.err(285):     at android.os.Handler.dispatchMessage(Handler.java:92)
04-05 23:20:11.642: WARN/System.err(285):     at android.os.Looper.loop(Looper.java:123)
04-05 23:20:11.685: WARN/System.err(285):     at android.app.ActivityThread.main(ActivityThread.java:4627)
04-05 23:20:11.685: WARN/System.err(285):     at java.lang.reflect.Method.invokeNative(Native Method)
04-05 23:20:11.692: WARN/System.err(285):     at java.lang.reflect.Method.invoke(Method.java:521)
04-05 23:20:11.702: WARN/System.err(285):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
04-05 23:20:11.702: WARN/System.err(285):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
04-05 23:20:11.711: WARN/System.err(285):     at dalvik.system.NativeStart.main(Native Method)
4

1 に答える 1

6

そのファイルにアクセスするには、rootアクセスが必要です。

回避策として、そのファイルをSDカードにコピーして読み取ることができるアクティビティまたはテスト関数を作成できます。

編集-この回答には、ファイルをSDカードにコピーするためのサンプルコードが含まれています。

更新<manifest ... >-上記の回答については、タグの後のマニフェストで必要になります:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
于 2011-04-05T21:59:38.313 に答える