0

Android システムの設定アプリ (つまり、Android の元のソース コード) のカスタマイズに取り組んでいます。その下で、Gallery から Android の設定アプリに画像を取得する必要があります。私が立ち往生した状況は、アプリから同じことを試みているときに正常に動作しますが、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 ですが、ユーザーが外部 SDCARD パーティションをアンマウントできる場合、これは古い Android システムからの遺産です。その時点で、いずれかのプロセスが外部ストレージにアクセスしている場合、vold はそのプロセスを強制終了します。

システムプロセスが外部ストレージにアクセスすることを禁止するのは、この考慮事項のためです-私の推測です。

于 2013-10-07T10:35:50.657 に答える