API 支持默认短信应用

API support for the Default SMS app

我对 Android 默认 SMS 应用程序有些疑问。

我必须创建一个需要在 Android SMS/MMS 数据库中 read/write SMS 和 MMS 的应用程序。 为此,我需要使用 "content://sms/***" Content Provider。

此 Content Provider 不是 SDK 的一部分,因此我强烈建议不要在 public 应用程序 (Previous question, Android Developerd Blog) 中使用它。

Google 在 Android 4.4 中引入了“Default SMS app”的概念,它允许第三方应用程序管理短信和彩信。这是否意味着 Content Provider "content://sms/***" 现在是官方 SDK 的一部分?

这样说对吗?

The SMS Content Provider existed with the same behavior/structure before Android 4.4, but is was not official in the Android SDK, therefore there might be devices with Android < 4.4 that might not support that.

这基本上是正确的,因为提供程序和底层数据库没有太大变化。但是,正如您所说,现在有默认 SMS 应用程序的概念,并且只有默认应用程序具有对 Provider 的标准写入权限。此外,SMS_RECEIVED 广播无法再中止,因此无法在任何侦听它的应用中隐藏该广播。

The SMS Content Provider is part of the Android >= 4.4 SDK, and it is officially fully supported in all devices (with Android >= 4.4).

不完全是。 API 现在正式成为 SDK 的一部分,但这并不意味着每个供应商都必须使用它来实现他们的 SMS 客户端,尽管大多数供应商都这样做。

Basically nothing change in the SMS Content Provider hidden API in Android 4.4, but is mostly a formalization. From hidden APi to officially API.

基本上是的,除了上述差异。另请注意,默认的 SMS 应用程序负责很多事情,实现一个可以完全充当一个应用程序的应用程序并非易事。