Android短信API

问题描述:

我知道短信内容提供商不属于公共API(至少没有记录),但如果我理解正确,只要您知道如何使用,仍然可以使用许多短信功能API(?)。Android短信API

E.g这是非常简单的插入短信到您的收件箱:

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

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

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

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

不幸的是负责这些通知的代码隐藏在messaging application。该类MessagingNotification有一个static方法updateAllNotifications,你可以调用使用PathClassLoader与反思:

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); 

This显然是一个very bad idea有以下几个原因,但我想不出另一种方式去做你所描述的。

也许你应该更换

content://sms 

content://sms/inbox 
+2

没有区别;短信出现在收件箱中。但仍然没有好的短信通知:) - – Schildmeijer 2009-11-18 10:17:34

你能触发后的短信推送通知?

主题:Does Android support near real time push notification?