访问其他应用内部数据

时间:2011-07-26 23:00:10

标签: java android dalvik

我知道在某些时候已经讨论过了。但在搜索之后,仍然存在一些关于该主题的问题。


我的情况: 我有一个App A,它生成信息并将其存储在内部存储中。 应用B应该访问App As信息。 关键是App A是在考虑App B的需求之前设计的。 同样重要的是 如果可能的话,App A不应该被修改。


我找到了什么:

  1. 内容提供商:进行大量更改
  2. Access database of another app
  3. 将Inforation存储在SD:最后可能性
  4. Application access permission to files on internal storage
  5. 问题指出第二点: 写道:

      

    要共享受保护的文件,必须使用相同的证书对应用程序进行签名,并在其AndroidManifest.xml文件中使用匹配的android:sharedUserId。

    我明白 sharedUserId ,但他引用了什么证书?

    问题指出第三点: 如果使用不同的 Context.MODE 保存,是否有办法访问App A的信息?

    我真的很感激你们的一些想法。 感谢。

1 个答案:

答案 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的数据。