应用程序如何在没有 root 的情况下访问 Android 6.0(API 级别 23)中 USB OTG 存储上的文件?
Posted
技术标签:
【中文标题】应用程序如何在没有 root 的情况下访问 Android 6.0(API 级别 23)中 USB OTG 存储上的文件?【英文标题】:How app can access files on USB OTG storages in Android 6.0 (API level 23) without root? 【发布时间】:2015-11-18 23:46:10 【问题描述】:android 6.0 开发者预览版(API 级别 23)可以在没有任何其他应用的情况下本地安装外部可移动 USB OTG 存储设备(更多信息请参阅:https://www.androidpolice.com/2015/05/28/android-m-feature-spotlight-external-storage-can-be-adopted-as-true-internal-storage-or-accessed-normally-with-no-additional-apps/)。
当用户连接 USB OTG 存储时,它会显示在系统存储菜单中,并且可以通过内置文件管理器访问。用户可以使用新的内置文件管理器访问 USB OTG 外部存储上的所有文件,无需 root 权限。
当我将 USB OTG 存储连接到我的 Android 设备时,它会安装在 /storage/A03E-1DF5
和 /mnt/media_rw/A03E-1DF5
,但需要 root 权限才能访问此文件夹。
我正在开发 Android 媒体播放器应用程序。
是否可以以及如何在我的应用程序中访问 Android 6.0 上 USB OTG 存储上的文件,例如没有 root 权限的内置文件管理器?
附:我已经在我的应用程序中使用了checkSelfPermission
和requestPermissions
函数,并且我的应用程序已经有android.permission.READ_EXTERNAL_STORAGE
和android.permission.WRITE_EXTERNAL_STORAGE
(有关更多信息,请参阅:https://www.androidpolice.com/2015/07/15/android-m-feature-spotlight-apps-now-need-your-permission-to-read-and-write-to-external-storage/),但看起来这些权限只影响内部存储(MicroSD) ,而对于 USB OTG,则没有这种细粒度的权限。
【问题讨论】:
你发现了吗? 这方面有什么更新吗?我想在没有用户干预的情况下以编程方式访问这些文件。 【参考方案1】:从 Android 6 开始,根据 USB Media Support 文档,Storage Access Framework 似乎是唯一可用的机制:
在 Android 6.0 中,任何未采用的设备都被视为便携设备。 […] 第三方应用程序必须通过存储访问框架才能与便携式存储上的文件进行交互;出于隐私和安全原因,直接访问被明确禁止。
【讨论】:
以上是关于应用程序如何在没有 root 的情况下访问 Android 6.0(API 级别 23)中 USB OTG 存储上的文件?的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有root访问权限的情况下部署NodeJS应用程序,以便在服务器重新启动后保持在线状态?
如何在没有 root 访问权限的情况下安装 python 模块?
如何在没有 root 访问权限的情况下在服务器上杀死其他人的 Python 进程?