我知道在某些时候已经讨论过了。但在搜索之后,仍然存在一些关于该主题的问题。
我的情况: 我有一个App A,它生成信息并将其存储在内部存储中。 应用B应该访问App As信息。 关键是App A是在考虑App B的需求之前设计的。 同样重要的是 如果可能的话,App A不应该被修改。
我找到了什么:
问题指出第二点: 写道:
要共享受保护的文件,必须使用相同的证书对应用程序进行签名,并在其AndroidManifest.xml文件中使用匹配的android:sharedUserId。
我明白 sharedUserId ,但他引用了什么证书?
问题指出第三点: 如果使用不同的 Context.MODE 保存,是否有办法访问App A的信息?
我真的很感激你们的一些想法。 感谢。
答案 0 :(得分:1)
同样重要的是:如果可能的话,App A不应该被修改。
幸运的是,这是不可能的。否则,每个人都可以随时获得App A的数据。
我得到了sharedUserId的观点,但他引用了什么证书?
这将是您的应用程序签名的签名密钥。例如,对于生产,它将是您用于Android Market的签名密钥。
请记住,在不破坏所有现有用户的情况下,您无法更改App A的sharedUserId
。 Google也不建议SDK开发人员使用sharedUserId
。
第三点的问题:如果使用不同的Context.MODE保存,是否可以访问App A的信息?
Context.MODE
与外部存储无关。每个应用程序都可以读取(并使用WRITE_EXTERNAL_STORAGE
,写入)他们想要的任何外部存储空间。
Context.MODE
与内部存储(openFileOutput()
)发挥作用。但是,如果您使文件具有全局可读性,那么任何应用程序都可以读取该数据,而不仅仅是App B.
内容提供商:进行大量更改
这个或者可能是带有AIDL接口的服务是最佳答案,您可以使用自定义权限来确保只有App B可以访问App A的数据。