Android SMS API

我知道SMS内容提供者不是公共API的一部分(至less没有logging),但是如果我理解正确,只要知道如何使用API​​(?),仍然可以使用许多SMSfunction。

例如,将短信插入收件箱非常简单:

ContentValues values = new ContentValues(); values.put("address", "+457014921911"); contentResolver.insert(Uri.parse("content://sms"), values); 

不幸的是,这不会触发标准的“收件箱中的新短信”通知。 可以手动触发吗?

编辑 :AFAIK Android中的“标准邮件应用程序(消息)”正在使用android.permission.RECEIVE_SMS权限侦听传入的短信。 然后,当新的SMS到达时,状态栏通知将被插入一个“特殊”通知ID。 所以我的问题(上面所述)的一个解决scheme可能是find并发送正确的广播意图; 像“新的短信已到达”的意图。

编辑 :从Android市场下载第三方消息应用程序( chompsms )。 这个应用程序更好地满足我的需求。 当我执行上面的代码chompsms通知新的短信,并显示“标准状态栏通知”。 所以我会说,标准的Android消息应用程序没有正确检测到短信? 还是我错了?

Solutions Collecting From Web of "Android SMS API"

不幸的是负责这些通知的代码隐藏在消息应用程序中 。 MessagingNotification类具有static方法updateAllNotifications ,您可以使用PathClassLoader和reflection调用:

 PathClassLoader c = new PathClassLoader("/system/app/Mms.apk", getClassLoader()); Class.forName("com.android.mms.util.ContactInfoCache", true, c) .getMethod("init", Context.class).invoke(null, context); Class.forName("com.android.mms.transaction.MessagingNotification", true, c) .getMethod("updateAllNotifications", Context.class).invoke(null, context); 

由于几个原因, 这显然是一个非常糟糕的主意 ,但我想不出你所描述的另一种方式。

你可以在短信后触发一个推送通知吗?

主题: Android是否支持近实时推送通知?

也许你应该更换

 content://sms 

 content://sms/inbox