是否可以在 Android 设备中访问 SD 卡的特定 LBA
Posted
技术标签:
【中文标题】是否可以在 Android 设备中访问 SD 卡的特定 LBA【英文标题】:Is it possible to access a particular LBA of an SD card in an android device 【发布时间】:2018-05-18 17:28:15 【问题描述】:我想访问连接到 android 设备的 SD 卡中的特定 LBA。默认情况下,Android 不提供该级别的低级别访问权限。我尝试通过 SCSI 命令通过 USB 读卡器访问它,但它不起作用。我还尝试了 POSIX 命令来直接查找和读取 LBA(使用 jni 的 CPP 本机命令),但文件读取有效,而不是直接 LBA 读取。谁能建议一种方法来做同样的事情?
【问题讨论】:
【参考方案1】:我不相信您可以像在 Linux/Unix 上使用块设备通常那样访问 android 上的分区(我会说是用户分区)。查看link 了解如何在 Linux 上实现它的详细信息。
现在在 android 上,您通常在 android 设备上看到的分区,如 /storage/sdcard0 或 /storage/sdcard1 或 /stroage/emulated/0 或 /storage/80FD-33DA 等可以映射到内部存储上的分区。内部存储通常有两个分区,一个用于用户应用程序无法访问的系统,第二个用于用户应用程序(用户应用程序可以访问)。它还可以映射到外部存储 SD 卡,具体取决于 Android 操作系统版本和设备制造商。
访问原始级别分区的另一种方法是使用 dd 命令(这同样不适用于所有 android 变体)。为此检查此 android stackexchange article。
dd if=/dev/block/mmcblk0p7 of=/storage/sdcard0/usrdata.img
您也可以查看file manager apps 以了解他们如何列出和管理用户分区
【讨论】:
以上是关于是否可以在 Android 设备中访问 SD 卡的特定 LBA的主要内容,如果未能解决你的问题,请参考以下文章
如何使用为 Android 5.0 (Lollipop) 提供的新 SD 卡访问 API?
java SD卡相关的工具类包括获取SD卡是否可用,剩余空间,总空间,剩余空间是否足够..当然你必须先申请访问SD卡的权限。