Android разделяет идентификатор пользователя и чтение / запись файла - PullRequest
4 голосов
/ 11 апреля 2011

Я страдал от одной проблемы в течение нескольких дней. В настоящее время я работаю в исходном коде «Настройки» на Android2.2.

В AdroidMenifest.xml мы видим:

android:sharedUserId="android.uid.system"

При этом можно получить доступ ко многим разрешениям для действий в настройках. Но с этим утверждением, SD-карта не может быть доступна для чтения / записи, я пытался читать файлы в каталоге

File f = new File("/mnt/sdcard/"+filename);

или

File f = new File("/sdcard/"+filename);

Но все они не работают, я получил исключение, сообщающее, что файл не существует (я уже положил туда файл).

Если я удалю android:sharedUserId="android.uid.system", я смогу получить доступ к файлу успешно. Тем не менее, мне нужно android:sharedUserId="android.uid.system" чтобы другие действия выполнялись хорошо.

Кто-нибудь сталкивался с такой же проблемой, и вы ее решили? Спасибо!

1 Ответ

9 голосов
/ 11 апреля 2011

Пользователь системы не может получить доступ к SD-карте, потому что, если SD-карта отключена, ей может потребоваться уничтожить все процессы, на которых открыты файлы, и мы не хотим, чтобы системные процессы уничтожались таким образом. Если вы хотите получить доступ к SD-карте, вам не нужно использовать системный общий идентификатор пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...