Android IPC 和 ContentProvider 的区别

标签 android ipc android-contentprovider

我正在尝试确定将存储在手机上的加密内容公开给第 3 方应用程序的最佳方法。内容是敏感的,需要受到保护,因此只有某些应用程序可以访问它。我正在研究的方法是 IPC 和 Content Provider。以下是我认为对我的情况而言两者的一些优缺点。

IPC - 专业级

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

IPC - 缺点

  • 比 Content Provider 更复杂

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

内容提供商 - 专业人士

  • 易于实现

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

内容提供商 - 缺点

  • 为了安全访问,内容提供商的 key 签名必须与第 3 方应用共享,这并不理想。

  • 返回的结果类型的灵 active 有限。 Content Provider 仅为查询的列返回一个 Cursor 对象。


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

最佳答案

Easy to secure access by making provider definition permission: protectionLevel=signature

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

To secure access, the Content Provider's key signature must be shared with 3rd party app which isn't ideal.

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

Content Provider returns only a Cursor object for the columns that were queried.

您可以使用基于文件的内容提供者 API 来补充或代替基于Cursor 的内容提供者 API。请参阅 ContentResolver 上的 openInputStream() 等方法。

Is there any major differences on performance and battery?

不是特别的。

Can either execute asynchronously?

两者都可以,但我个人觉得使用服务更容易一些。

Any other comments/suggestions to the list?

权限同样适用于服务和内容提供商,但我想再次强调,您永远不应该与第三方共享您的签名 key ,除非是在 Guzzle 威胁下。

关于Android IPC 和 ContentProvider 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6534187/

相关文章:

android:以编程方式本地化动态字符串

android - ACTION_TIME_TICK 每秒广播一次?

c - pthread 条件和进程终止

javascript - IPC 消息阻塞了 Electron 中的进程

android - gmail android App 如何加载它的 ListView?

android - 如何解决多个内容提供商?

android - 向后播放音频

Android间歇类未找到运行时异常

c - 进程异常终止时的资源清理

android - 无法使用 SQLiteDatabase.openDatabase() 打开 android 数据库