Android IPC和ContentProvider的区别

Dom*_*Dom 7 android ipc android-contentprovider

我正在尝试决定将存储在手机上的加密内容暴露给第三方应用的最佳方法.内容非常敏感,需要加以保护,因此只有特定应用才能访问此内容.我正在研究的方法是IPC和内容提供商.以下是我认为是我的情况的一些赞成和反对意见.

IPC - 专业版

  • 灵活的客户响应类型.可以返回不同的错误代码和受限访问级别

IPC - Con's

  • 实现比Content Provider更复杂

  • 必须编写自己的方式来保护对内容的访问.

内容提供商 - 专业版

  • 易于实施

  • 通过提供者定义权限轻松保护访问:protectionLevel = signature

内容提供商 - Con's

  • 为了保护访问权限,Content Provider的密钥签名必须与第三方应用程序共享,这是不理想的.

  • 返回的结果类型的灵活性有限.Content Provider仅返回查询列的Cursor对象.


性能和电池有什么重大差异吗?
可以异步执行吗?
对列表有任何其他意见/建议吗?

Com*_*are 4

通过提供提供者定义权限,轻松保护访问:protectionLevel=signature

仅当您是唯一使用该内容提供商的公司时,这才有效。

为了确保访问安全,内容提供商的密钥签名必须与第三方应用程序共享,这并不理想。

我更愿意将此描述为“可能符合‘精神错乱’的医学定义”。您的第三方将能够修改您的“安全”数据、伪造您发布的应用程序、将您的签名密钥泄露给恶意软件作者等。

Content Provider 仅返回所查询列的 Cursor 对象。

除了基于文件的内容提供程序 API 之外,您还可以使用基于文件的内容提供程序 API,或者代替Cursor基于文件的内容提供程序 API。openInputStream()请参阅类似的方法ContentResolver

性能和电池方面有什么重大差异吗?

不是特别。

可以异步执行吗?

两者都可以,尽管我个人发现服务更容易一些。

对列表还有其他意见/建议吗?

权限对于服务和内容提供商同样有效,但我想再次强调,您永远不应该与第三方共享您的签名密钥,除非是在枪口下。