【问题标题】:unable to access file on android无法访问android上的文件
【发布时间】:2011-07-30 08:44:57
【问题描述】:

编辑:当我尝试实施建议的解决方案时发生错误。请查看下面的附加信息。如果可以的话,请帮助我,在此先感谢!

好的,所以我最近终于让我的应用程序创建并写入文件。

在模拟器上,这可以完美运行。但是,当我将应用程序上传到我的手机并尝试将adb shell 放入我的手机时。我无法访问手机上包含该文件的目录。

目录是/data/data/cpe495.smartapp/files/。当我尝试更改目录时,它告诉我我没有权限。

我假设这是因为我的手机没有 root 并且不在 root 帐户中。植根我的手机不是我要做的事情。

有没有一种方法可以让我创建这个文件并写入它,并能够通过我的手机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)

【问题讨论】:

标签: android file root android-file


【解决方案1】:

您是正确的,需要 root 访问权限才能访问该文件。

作为一种解决方法,您可以创建一个活动或测试函数,将该文件复制到 SD 卡,以便您可以读取它。

编辑 - this answer 包含将文件复制到 SD 卡的示例代码。

更新 - 对于上述答案,您需要在清单中 &lt;manifest ... &gt; 标记之后:

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

【讨论】:

  • 对如何做到这一点有任何提示或建议吗?我之前尝试写入 sd 卡,但它在模拟器上不起作用。
  • 是的,马科斯的评论指出了我的答案。我目前正在测试该实现。
  • 我尝试了您作为示例发布的代码,但它不起作用,告诉我权限被拒绝。请参阅我的操作以获取更多信息。
  • 您的清单中有外部存储写入权限吗?
  • 是的,我这样做了,但它不起作用。但是,我在真正的东西之前在模拟器上测试这个。其他地方有人提到我可能需要在模拟器上的设备上添加一个 sd 卡,我需要这样做吗?
猜你喜欢
  • 2014-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-17
相关资源
最近更新 更多