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