0

我正在定制 Android 系统的 Setting 应用程序(即 Android 的原始源代码),在此我需要从 Gallery 获取图像到 Android'd Setting 的应用程序。我被卡住的情况是,当我在我的应用程序中尝试相同的操作时,它工作正常,但是当涉及到 Android 设置的应用程序时,我无法在 sdcard 中找到图像的路径并找到 NullPointerException。

4

1 回答 1

0

您不能从作为系统 UID 运行的程序访问外部存储。

您可以使用 adb shell 检查挂载点在哪里以及 /mnt 的文件模式

shell@maguro:/ $ ls -l  /sdcard
lrwxrwxrwx root     root              2013-10-05 06:09 sdcard -> /storage/emulated/legacy

shell@maguro:/ $ ls -l  /storage/emulated/legacy
lrwxrwxrwx root     root              2013-10-05 06:09 legacy -> /mnt/shell/emulated/0

shell@maguro:/mnt $ ls -l
drwxr-xr-x root     system            2013-10-05 06:09 asec
drwxr-xr-x root     system            2013-10-05 06:09 obb
lrwxrwxrwx root     root              2013-10-05 06:09 sdcard -> /storage/emulated/legacy
drwx------ root     root              2013-10-05 06:09 secure
drwx------ shell    shell             2013-10-05 06:09 shell

您会看到系统用户无法访问外部存储。

虽然自 ICS 以来它现在是 FUSE,但这是旧 Android 系统的遗留物,当用户能够卸载外部 SDCARD 分区时。那时,如果任何进程正在访问外部存储,vold 将终止该进程。

禁止系统进程访问外部存储是出于这个考虑 - 我的猜测。

于 2013-10-07T10:35:50.657 回答