0

我使用 SMSManager 发送消息,我可以发送消息,但我想将其保存在消息对话中(设备中的默认消息应用程序)?

我所做的是

ContentValues values = new ContentValues();
values.put("address", "123456789");
values.put("body", "foo bar");
getContentResolver().insert(Uri.parse("content://sms/sent"), values);

我可以将其添加到收件箱中,但是

正如 CommansWare 在这里评论的那样,

SMS 内容提供程序不是 Android SDK 的一部分。您的代码将在用自己的 SMS 客户端替换的设备上中断。您的代码可能会在未来的 Android 版本中中断

我没有设备可以在最新版本中进行测试,所有版本的 android 的解决方案是什么?

4

1 回答 1

1

内容 uri 不是 Android sdk 的一部分。虽然我还没有看到任何使用替代 uri 作为 sms 提供商的设备,但它可能是其中之一。我认为 Google 将来会将这个 uri 字符串更改为另一个字符串的可能性很小。但是供应商也可以修改它。因此,通常所有版本的 Android 都没有灵丹妙药。

正如 PLB 所说,您可以为您的应用程序添加一些更新和错误报告功能。当设备更新到具有不同提供商的版本时,请通知用户,如果您创建处理更改的新应用程序,请让您的客户下载一个。如果您的代码无法读取/写入当前 uri。向您报告有关该设备的一些信息。所以你将能够修复它。

我首先想到,也许你可以自动查找 com.android.providers.telephony.SmsProvider 的字节码(dex 字节码)。但是,这也不是 Android sdk 的一部分。

于 2013-02-20T07:36:45.963 回答