我的应用尝试读取并将文件写入SD卡,但失败了。我有权限,SD卡有空闲内存。环境如下。
<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卡,但是一天之后出现了同样的错误。
我不知道为什么,谁可以帮助我? 谢谢!