Android:在特定的threadId位置删除SMS

时间:2010-06-23 18:10:57

标签: android sms observer-pattern

我试图理解手机和手机上的软件之间的区别。我在Droid Incredible上编码和测试。 content://sms的内容观察者工作正常,我能够删除Incredible上的threadIds,但我的应用程序在Moto Droid里程碑上崩溃了。我使用Milestone模拟器包使用Moto Dev Studio测试里程碑。它在模拟器中工作正常,但在实际设备上没有。

为什么内容://短信在Incredible上运行良好,但在里程碑上却没有?为什么它会在里程碑模拟器上工作而不在里程碑设备上工作?

这种删除方法如下所示,uri为content://sms + threadId

getContentResolver().delete(deleteUri, "address=? and date=?", new String[] {msg.getOriginatingAddress(), String.valueOf(msg.getTimestampMillis())});

很多人说这样的内容观察者不是SDK的一部分。了解。如何以合法的原因删除短信,例如使用密码创建一个单独的应用程序,该密码将sms消息与主消息系统分开存储?

1 个答案:

答案 0 :(得分:2)

  

为什么content:// sms可以正常工作   难以置信,但不是   里程碑

因为,我一直指出,content://sms不是Android SDK的一部分。它没有理由一样。欢迎设备制造商更改,消除它,等等。谷歌告诉你not to use it。日历内容提供商已经过类似的修订,对应用程序产生了类似的影响。这些只是应用程序的一部分,它们并不适合开发人员使用。

  

如何删除合法的短信   创建单独的原因   使用密码的应用程序   将sms消息分开并分开   来自主要的短信系统。

您无法从其他SMS应用程序中删除邮件并坚持在SDK的范围内。尝试从SMS内容提供商删除邮件可能无法在某些设备上运行,可能对其他设备没有影响,可能导致其他应用程序在其他设备上崩溃,等等。

就此而言,您无法创建单独的SMS应用程序并坚持在SDK的范围内,因为您需要接收的Intent未记录(尽管众所周知)。例如,某些设备制造商选择更改此Intent以使用不同的操作并非超出可能性范围。这至少在某种程度上不太可能,因为这将是操作系统更改而不是对某些随机应用程序的更改(例如,消息传递,所谓的SMS内容提供商的主页)。但是,这是可能的。