2011-04-05 55 views
0

編輯文件:當我試圖執行建議的解決方案發生錯誤時。請查看下面的附加信息。請幫助我,如果可以的話,提前致謝!無法訪問Android上

好了,我終於得到了我的應用程序創建和最近寫入文件。

在模擬器上,這完美地工作。但是,當我上傳應用程序到我的手機,並嘗試adb shell到我的手機。我無法到達包含該文件的手機上的目錄。

目錄是/data/data/cpe495.smartapp/files/。當我嘗試更改目錄時,它告訴我我沒有權限。

我假定這是因爲我沒有做我的手機紮根,並在root帳戶我不是。開啓我的手機並不是我要做的事情。

有沒有我可以創建這個文件,並寫入它,並能夠adb pull它關閉我的電話的一種方式?這裏是目前我創建文件的方式:

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

在此先感謝!

仍然沒有工作

我已經添加下面的代碼我的應用程序,當我運行它,當它試圖將文件寫入失敗,出現以下錯誤的SD卡,請幫助我!

     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) 
+0

我問了一下得到的文件到根http://stackoverflow.com/questions/5434100/acess-文件的根在設備 – 2011-04-05 22:00:06

+0

當我試着你的代碼它給了我下面的錯誤。請參閱我的操作以獲取更多信息。 – prolink007 2011-04-05 23:22:57

回答

6

你是正確約需要root權限才能訪問該文件。

作爲一種變通方法,您可以創建一個拷貝該文件將SD卡的活動或測試功能,使您可以讀取它。

編輯 - this answer包含將文件複製到SD卡的示例代碼。

更新 - 對於上面的回答,你需要在你的清單中<manifest ... >標籤後:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
+0

如何做到這一點有任何提示或建議?我以前嘗試寫入SD卡,它不會在模擬器上工作。 – prolink007 2011-04-05 22:06:09

+0

是的,馬科斯的評論指出了我的答案。我正在測試該實施。 – prolink007 2011-04-05 23:12:30

+0

我試過你發佈的代碼作爲例子,它不工作,告訴我權限被拒絕。請參閱我的操作以獲取更多信息。 – prolink007 2011-04-05 23:23:26