sdcard中的Android读写文件失败

时间:2016-02-26 11:00:43

标签: android file

我的应用尝试读取并将文件写入SD卡,但失败了。我有权限,SD卡有空闲内存。环境如下。

  • 华为P7 Android4.4.2 API-19
  • sdcard有空闲内存7.3G
  • AndroidManifest.xml中的请求权限

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

我在我的活动中尝试了一些代码。

//return true
Environment.getExternalStorageDirectory().exists()

//return false
new File(Environment.getExternalStorageDirectory() , "temp").exists()

//return false
new File(Environment.getExternalStorageDirectory() , "temp").mkdirs()

//return false
new File(Environment.getExternalStorageDirectory() , "temp.txt").exists()

//throw exception  Method threw 'java.io.IOException' exception.
//libcore.io.ErrnoException: open failed: EACCES (Permission denied)
new File(Environment.getExternalStorageDirectory() , "temp.txt").createNewFile()

// return 0  that means has permisstion
getPackageManager().checkPermission("android.permission.READ_EXTERNAL_STORAGE",getPackageName())

// return 0  that means has permisstion
getPackageManager().checkPermission("android.permission.WRITE_EXTERNAL_STORAGE",getPackageName())

同样的,我的手机有问题。但是我可以在外壳中读写。

$ adb shell
$ cd sdcard 
$ df
Filesystem               Size     Used     Free   Blksize
/mnvm1:0                 7.5M     4.2M     3.3M   1024
/mnvm3:0                15.0M     6.2M     8.7M   1024
/dev                   947.2M   480.0K   946.7M   4096
/sys/fs/cgroup         947.2M    12.0K   947.2M   4096
/mnt/secure            947.2M     0.0K   947.2M   4096
/mnt/asec              947.2M     0.0K   947.2M   4096
/mnt/obb               947.2M     0.0K   947.2M   4096
/mnvm2:0                 7.5M     3.7M     3.8M   1024
/fs_emmc_log           947.2M    12.0K   947.2M   4096
/system                  1.5G     1.2G   291.8M   4096
/cache                 252.0M     4.1M   247.8M   4096
/data                   11.7G     4.4G     7.3G   4096
/cust                  503.9M   386.1M   117.9M   4096
/splash2                63.0M    13.3M    49.7M   4096
/3rdmodem              126.0M     8.5M   117.5M   4096
/3rdmodemnvm            30.0M     1.4M    28.6M   1024
/3rdmodemnvmbkp         15.0M     1.1M    13.9M   1024
/mnt/shell/emulated     11.7G     4.4G     7.3G   4096

$ mkdir temp
$ ls | grep temp
temp

$ echo "hello" > temp.txt
$ ls | grep temp
temp
temp.txt

我重启了手机,然后我的应用程序可以读取并将文件写入SD卡,但是一天之后出现了同样的错误。

我不知道为什么,谁可以帮助我? 谢谢!

0 个答案:

没有答案