【问题标题】:API support for the Default SMS app默认 SMS 应用程序的 API 支持
【发布时间】:2015-03-04 13:11:24
【问题描述】:
我对 Android 默认短信应用有一些疑问。
我必须创建一个需要在 Android SMS/MMS 数据库中读取/写入 SMS 和 MMS 的应用。
为此,我需要使用“content://sms/***”内容提供程序。
此内容提供程序不是 SDK 的一部分,因此我强烈建议不要在公共应用程序中使用它(Previous question、Android Developerd Blog)。
Google 在 Android 4.4 中引入了“Default SMS app”的概念,它允许第三方应用程序管理短信和彩信。这是否意味着内容提供者“content://sms/***”现在是官方 SDK 的一部分?
这样说对吗?
SMS 内容提供程序在 Android 4.4 之前以相同的行为/结构存在,但在 Android SDK 中不是官方的,因此可能有 Android
SMS Content Provider 是 Android >= 4.4 SDK 的一部分,官方完全支持所有设备(Android >= 4.4)。
Android 4.4 中的 SMS Content Provider 隐藏 API 基本上没有任何变化,但主要是一种形式化。从隐藏的 API 到正式的 API。
【问题讨论】:
-
"这是否意味着内容提供者 "content://sms/***" 现在是官方 SDK 的一部分?" -- 表示Android SDK中有Sms和Mms内容提供者合约。
标签:
android
sms
android-contentprovider
【解决方案1】:
SMS Content Provider 在 Android 4.4 之前以相同的行为/结构存在,但在 Android SDK 中不是官方的,因此可能有 Android
这在很大程度上是正确的,因为 Provider 和底层数据库没有太大变化。但是,正如您所说,现在有默认 SMS 应用程序的概念,并且只有默认值具有对 Provider 的标准写入权限。此外,SMS_RECEIVED 广播不能再被中止,因此无法隐藏该广播以防止任何正在侦听它的应用程序。
SMS Content Provider 是 Android >= 4.4 SDK 的一部分,官方完全支持所有设备(Android >= 4.4)。
不完全是。 API 现在正式成为 SDK 的一部分,但这并不意味着每个供应商都必须使用它来实现他们的 SMS 客户端,尽管大多数供应商都这样做。
Android 4.4 中的 SMS Content Provider 隐藏 API 基本上没有任何变化,但主要是一种形式化。从隐藏的 API 到正式的 API。
基本上,是的,除了上述差异。另请注意,默认的 SMS 应用程序负责很多事情,要实现一个可以完全充当一个应用程序的应用程序并非易事。