SharedUserId&档

时间:2015-09-16 20:28:39

标签: android

sharedUserId可以提供对data / data / com.example / files目录中文件的访问权限吗?

我试图这样做,我可以检索上下文并检查这个目录是否存在,但是当我尝试从中读取文件时,debuger给了我PERMISSION DENIED错误。

文档中的{p> 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 个答案:

答案 0 :(得分:3)

  

sharedUserId可以提供对data / data / com.example / files目录中文件的访问吗?

是的,当且仅当:

  • 两个应用都具有相同的非空sharedUserId

  • 两个应用都始终具有相同的非空sharedUserID值(即,您无法将应用从没有sharedUserId更新为sharedUserId 1}})

  • 这两个应用都使用相同的签名密钥进行签名

话虽如此,sharedUserId几乎从来都不是正确答案,原因很简单,因为这两个应用都不会知道其他应用对文件做了什么。使用ContentProvider(或其他形式的IPC)在应用之间共享内容,使用signature级权限或其他身份检查,以确保只有正确的应用才能通过IPC渠道进行交互。