[英]External SDcards with Android API 26
环境:
Android Studio 3.0.1。 已应用所有最新补丁。 外接AVD Nexus 6,SD卡。
问题:启动AVD后,浏览本地文件夹时,外部sdcard不会在ESExplorer或我的应用程序“新建播放列表管理器”中显示。
使用
adb shell
su
cd /storage
ls -al
表演
emulated
self
所以没有外部SD卡。
但是,使用新的“文件”应用程序,将显示外部sdcard。 另外,在请求访问sdcard时运行Picker(使用Storage Access Framework)
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
startActivityForResult(intent, OPEN_DIRECTORY_REQUEST_CODE);
再次显示外部SD卡
我使用名为MemoryStorage的类探讨了几个selinux级别的选项(在此论坛上发布)
/ proc / mounts不返回外部sdcard
/system/etc/vold.fstab不存在
Google是否再次更改了对外部SD卡的访问权限?
我如何获得物理外部SD卡。
附加:sdcard是文件系统的一部分,如下所示,LOST.DIR位于外部sdcard上
generic_x86:/ # ls -alR |grep LOST.DIR
drwxrwx--- 2 media_rw media_rw 2048 2017-12-04 15:06 LOST.DIR
./mnt/media_rw/14FA-3B13/LOST.DIR:
我发现了这一点:新的“ SDCardFS”文件系统包装器
Google尚未对此发表任何评论,但显然Android 8.0带有对名为“ SDCardFS”的新文件系统包装的支持。 也许这个说法太夸张了-随着8.0的升级,Google Pixel和一些Nexus设备神奇地开始使用SDCardFS,因此大概意味着这意味着AOSP中的任何人都可以使用新的文件存储方案。 XDA的无畏硬件黑客一直在跟踪实施进度,显然SDCardFS应该大大减少访问Android共享数据存储所涉及的I / O开销。
参考:
https://arstechnica.com/gadgets/2017/09/android-8-0-oreo-thoroughly-reviewed/8/
另一篇有趣的文章:
和
http://pocketnow.com/2015/12/18/adoptable-storage
更新:进一步的调查表明,外部sdcard确实存在,但是xrw权限仅针对用户(所有者)和组访问设置。 其他访问没有权限。
使用chmod o + r无效
generic_x86:/mnt # ls -al
total 0
drwxr-xr-x 10 root system 220 2017-12-07 11:29 .
drwxrwxrwt 16 root root 660 2017-12-07 11:29 ..
drwx--x--x 2 root root 40 2017-12-07 11:29 appfuse
drwxr-xr-x 2 root system 40 2017-12-07 11:29 asec
drwxrwx--x 2 system system 40 2017-12-07 11:29 expand
drwxr-x--- 3 root media_rw 60 2017-12-07 11:29 media_rw
drwxr-xr-x 2 root system 40 2017-12-07 11:29 obb
drwx------ 5 root root 100 2017-12-07 11:29 runtime
lrwxrwxrwx 1 root root 21 2017-12-07 11:29 sdcard -> /storage/self/primary
drwx------ 3 root root 60 2017-12-07 11:29 secure
drwxr-xr-x 3 root root 60 2017-12-07 11:29 user
generic_x86:/mnt # cd media_rw
generic_x86:/mnt/media_rw # ls -al
total 0
drwxr-x--- 3 root media_rw 60 2017-12-07 11:29 .
drwxr-xr-x 10 root system 220 2017-12-07 11:29 ..
drwxrwx--- 3 media_rw media_rw 512 2017-12-07 11:29 12FE-0C07
进一步更新:
你猜怎么了
adb shell sm set-force-adoptable true
使sdcard显示为/ storage / xxxx-xxxx。
切换selinux sm命令:
generic_x86:/ # sm /?
usage: sm list-disks [adoptable]
sm list-volumes [public|private|emulated|all]
sm has-adoptable
sm get-primary-storage-uuid
sm set-force-adoptable [true|false]
sm set-virtual-disk [true|false]
sm partition DISK [public|private|mixed] [ratio]
sm mount VOLUME
sm unmount VOLUME
sm format VOLUME
sm benchmark VOLUME
sm fstrim
sm forget [UUID|all]
sm set-emulate-fbe [true|false]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.