没有API 23的写权限,但授予了所有必需的权限

时间:2016-08-19 18:41:25

标签: android file permissions

文件:

root@generic_x86:/storage # ls -la 1AF9-2810/
-rwxrwx--x root     sdcard_rw   348218 2016-08-19 17:55 2012 (1).JPG
-rwxrwx--x root     sdcard_rw   106512 2014-12-05 19:49 2012 (2).jpg
drwxrwx--x root     sdcard_rw          2016-08-16 19:36 Android
drwxrwx--x root     sdcard_rw          2016-08-16 19:36 LOST.DIR

Android API 23授予的权限:

ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED
true
ActivityCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED
true

测试新文件1:ko

new File("/storage/emulated/1AF9-2810/test1").createNewFile()
IOException - open failed: ENOENT (No such file or directory)

测试新文件2:ko

new FileOutputStream("/storage/emulated/1AF9-2810/test2", false)
FileNotFoundException - /storage/emulated/1AF9-2810/test2: open failed: ENOENT (No such file or directory)

测试现有文件:ko

new FileOutputStream("/storage/emulated/1AF9-2810/2012 (1).JPG", false)
FileNotFoundException - /storage/emulated/1AF9-2810/2012 (1).JPG: open failed: ENOENT (No such file or directory)

测试/存储/模拟/ 0:确定

new FileOutputStream("/storage/emulated/0/test3.JPG", false)
FileOutputStream OK!!

原始Google Android图库具有对我的图像的写入权限,可以写入其中。 (见时间戳“2016-08-19 17:55 2012(1).JPG”)

有人可以解释会发生什么吗?为什么我不能写入SD卡路径/ storage / emulated / 1AF9-2810?

root@generic_x86:/storage # ls -la
drwxrwx--x root     sdcard_rw          2016-08-19 17:55 1AF9-2810
drwx--x--x root     sdcard_rw          2016-08-19 17:28 emulated
drwxr-xr-x root     root              2016-08-19 17:28 self

DF

root@generic_x86:/storage # df
Filesystem               Size     Used     Free   Blksize
/dev                   249.6M    44.0K   249.6M   4096
/sys/fs/cgroup         249.6M    12.0K   249.6M   4096
/mnt                   249.6M     0.0K   249.6M   4096
/system                  1.2G   861.7M   378.2M   4096
/cache                  61.0M    64.0K    60.9M   4096
/data                    1.9G   205.6M     1.7G   4096
/storage               249.6M     0.0K   249.6M   4096
/mnt/runtime/default/emulated     1.9G   205.6M     1.7G   4096
/storage/emulated        1.9G   205.6M     1.7G   4096
/mnt/runtime/read/emulated     1.9G   205.6M     1.7G   4096
/mnt/runtime/write/emulated     1.9G   205.6M     1.7G   4096
/mnt/media_rw/1AF9-2810  1020.0M   474.0K  1019.5M   2048
/mnt/runtime/default/1AF9-2810  1020.0M   474.0K  1019.5M   2048
/storage/1AF9-2810    1020.0M   474.0K  1019.5M   2048
/mnt/runtime/read/1AF9-2810  1020.0M   474.0K  1019.5M   2048
/mnt/runtime/write/1AF9-2810  1020.0M   474.0K  1019.5M   2048

编辑: 有趣的讨论:http://forum.xda-developers.com/showthread.php?t=2634840&page=2

但没有root访问权限它就无法运行。我们需要WRITE_MEDIA_STORAGE权限,该权限仅允许用于系统进程。

1 个答案:

答案 0 :(得分:2)

自Android 4.4以来,您无法在removable storage上的任意位置写信。您的权限适用于external storage,这不是可移动存储。