Android:删除特定 threadId 位置的短信

标签 android sms observer-pattern

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

为什么 content://sms 在 Incredible 上运行良好,但在 Milestone 上却不行?为什么它会在 Milestone 模拟器上运行,而不是在 Milestone 设备上运行?

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

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

很多人说这样的内容观察器不是 SDK 的一部分。明白了。我如何才能出于合法原因删除短信,例如创建一个单独的应用程序,使用密码将短信与主短信系统分开存储?

最佳答案

Why would content://sms work fine on the Incredible, but not on the Milestone

因为,正如我一直指出的那样,content://sms 不是 Android SDK 的一部分。没有理由相同。欢迎设备制造商对其进行更改、删除等。谷歌告诉你not to use it . Calendar content provider 已经经历了类似的修改,对应用程序产生了类似的影响。这些只是作为应用程序一部分的提供程序,并不打算供开发人员使用。

How can I delete an sms for legitimate reasons such as creating an separate application with a password that stores sms messages separate and apart from the main text messaging system.

您不能从其他 SMS 应用程序中删除消息并停留在 SDK 的范围内。尝试从 SMS 内容提供商删除消息可能在某些设备上根本不起作用,可能对其他设备没有影响,可能导致其他应用程序在其他设备上崩溃,等等。

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

关于Android:删除特定 threadId 位置的短信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3104316/

相关文章:

android - 如何以编程方式从 Android 读取 SIM SENT SMS 消息?

c# - 通过 Twilio 发送带有 url 的短信

php - PHP中的观察者模式——不同事件的正确做法

java - 我的应用下载量出乎意料地减少了 10 倍以上

iOS 发送带有位置对象的短信

php - SplSubject/SplObserver有何用处?

ruby-on-rails - 使用Rails观察器跟踪字段变化

android - 对 androidx.cardview.widget.CardView 的涟漪效应

c# - 使用 LocationManager.SetProviderLocation 模拟位置,如何使位置完整

java - 在 Android Studio 的 EditText 中添加逗号作为数字的千位分隔符?