2015-09-16 2 views
0

Может ли sharedUserId предоставлять доступ к файлам в каталоге data/data/com.example/files?SharedUserId & Files

Я попытался это сделать, и я могу получить контекст и проверить, существует ли этот каталог, хотя, когда я пытаюсь читать файлы с него, debuger дает мне ошибку PERMISSION DENIED.

They say в документации, SharedUserId обеспечивает совместный доступ к данным и даже может запускать два приложения в том же процессе, что данные о том, что они говорят? Может быть, эта функция дает доступ только к «статическим» ресурсам приложения, а не к тем, которые были созданы динамически?

UPD

fw_context = createPackageContext("com.example", Context.CONTEXT_IGNORE_SECURITY); 
String[] str = fw_context.getFilesDir.list();//str=null 

Как я уже заметил, то str здесь null, я не знаю, почему это null, но я знаю, что есть некоторые файлы в этой директории (я коренится телефон так что я это вижу)

ответ

1

Может ли sharedUserId предоставлять доступ к файлам в каталоге data/data/com.example/files?

Да, если и только если:

  • Оба приложения имеют одинаковый непустой sharedUserId значение

  • Оба приложения имеют всегда имели один и тот же непустое sharedUserID значение (т.е. вы не можете обновить приложение от sharedUserId до sharedUserId)

  • Оба приложения подписаны одним и тем же ключа подписи

Это, как говорится, sharedUserId почти никогда не правильный ответ, по той простой причине, что ни приложение будет знать о том, что другое приложение делает с файлами. Используйте ContentProvider (или какую-либо другую форму IPC) для совместного использования контента между приложениями, используя разрешения signature или другие проверки подлинности, чтобы гарантировать, что только правильные приложения могут взаимодействовать по каналу IPC.

+0

Благодарим за ответ! Я прочитал ваши предыдущие ответы по этому вопросу и уже решил, что не могу использовать эту функцию в своем случае, но я все еще пытаюсь понять, почему, если кто-то может это сделать, почему я не могу! Я добавил реализацию получения контекста и того, как я пытаюсь получить список файлов, он всегда равен нулю, и если я попытаюсь с одиночным файлом с точным адресом, он говорит о РАЗРЕШЕНИИ РАЗРЕШЕНИЯ, и мое дело соответствует условиям, которые вы наметили , –

+0

@MovsarBekaev: Я бы начал с регистрации того, что 'fw_context.getFilesDir()' возвращает и подтверждает, что оно выглядит правильно. – CommonsWare

+0

«Файл f = fw_context.getFilesDir();' возвращает правильный путь к/files/dir приложения com.example, так или иначе, я потратил целый день на это и только теперь узнал, что я не могу использовать это даже если он работает, поэтому я пытаюсь узнать о FileProvider, мне просто нужно скопировать файлы из одного приложения в другое и не использовать внешние разрешения, так как люди имеют очень негативное отношение к загрузке таких приложений .. спасибо вам однажды больше, и спасибо за книгу, будет очень полезно изучить ее! –

Смежные вопросы