- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试确定将存储在手机上的加密内容公开给第 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 和 Blackberry(将来可能适用于 JavaME)。业务逻辑对所有平台都是通用的 - 因此,代码中的相应层也是如此。 但我也有一个数据
谁能告诉我如何创建一个 ContentProvider,它可以查询多个数据库/ContentProvider 以获得 SearchView 提供的搜索建议。 最佳答案 使用 ContentProvid
我想将一个通用的 POJO 放入 ContentValues 并在 ContentProvider 中解码。 我一直在绞尽脑汁:Parcelables、ContentValues 和插入 SQLite
我在 AsyncTask 中有一个 ContentProvider 访问权限,在手机上查找存储在 sqlite 中的一些数据时通常工作正常。 不过,我还有一些其他后台服务可以进行网络检查以及下载和更新
我正在尝试使用自定义 ContentProvider 提供游戏内高分。它将使用服务器连接而不是 SQLite 数据库。 现在,ContentProvider 的query()、update() 和de
Google 就 ContentProvider 中的路径遍历漏洞发出警告 https://support.google.com/faqs/answer/7496913 Implementations
我见过很多使用ContentProvider与sqlite数据库交互的例子。我在某处读到的文档说 ContentProvider 也能够与普通文件交互。但我们要怎么做呢?到目前为止,我找不到与此相关的
如何将搜索中的引号转义到 ContentProvider?像这样查询: String value = "O'Key" ;/ / string contains a quote Cursor peopl
我正在开发一个将数据存储在 SQLite 数据库中的内容提供程序。在开发过程中,我需要更改模式,或者完全删除数据库并重新构建它(在这个开发阶段我不会升级数据库)。 我找到了数据库文件,存储在/data
大家,我在看android源码。但是我找不到对我有值(value)的东西。实际上,我想知道ContentProvider是否像AIDL一样工作。你知道,AIDL可以实现两个独立应用程序之间的通信。 所
我正在尝试为我的应用程序编写一个内容提供程序,以允许访问我的应用程序存储在 SD 卡上的某些文件。文件的名称是其内容 URI 的哈希值,因此例如 content://my.app.files/test
有什么方法可以利用 ContentProvider 检查我的 Android 手机是否已连接到互联网? 谢谢 最佳答案 我想你想要ConnectivityManager .有一个例子 here . 这
是否可以在应用中初始化contentprovider? 因为我需要为每个用户/服务器组合创建一个数据库,并且我在内容提供者的 oncreate 方法中使用登录信息创建数据库! 最佳答案 根据听起来您正
仅当您需要在多个应用程序之间共享数据时才需要内容提供程序。 这是使用它的唯一目的吗?简单地从 WS 获取数据并将其写入 CP,然后在 Activity 中从这里读取怎么样? iosched呢? :这里
当我从ContentProvider 获取Cursor 对象时,那时我可以使用这个游标对象来检索所有数据。我的问题是: 游标是否包含里面的所有数据。这意味着系统已经查询并花费了时间来加载数据。 这只是
我有一些加密存储 (SQLite),想实现我自己的 ContentProvider。前提是: 只有在以下情况下才应授予/可能访问权限工作/启动我的应用程序 - 总而言之其他情况访问必须被拒绝返回给用户
我有一个 ContentProvider 子类来处理我所有的数据库工作,还有一个在后台运行的服务。 我似乎无法将服务绑定(bind)到 ContentProvider。我是否可以从 ContentPr
我有一个在 list 中声明的 ContentProvider,它是什么时候真正创建的?当应用程序启动时但在启动第一个 Activity 之前?当第一次查询/更新/插入完成时?什么时候? 最佳答案
我想实现一个操作多个表的ContentProvider。到目前为止,这是我尝试过的。我编写了一个 Java Interface,表示每个表都应在其 CRUD 类中实现的 CRUD 操作。 public
我制作了自己的 contentprovider,我通过多次插入将大量数据一次性放入其中。 该应用程序将从外部源接收数据,此时我收到大约 30 个项目(因此是插入的 30 倍)。 现在我注意到这需要很多
我是一名优秀的程序员,十分优秀!