繁体   English   中英

Android SMS API

[英]Android SMS API

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

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

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

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

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

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

不幸的是,负责这些通知的代码隐藏在消息传递应用程序中 MessagingNotification类有一个static方法updateAllNotifications ,您可以使用PathClassLoader和反射调用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);

出于几个原因, 显然是一个非常糟糕的想法 ,但我想不出另一种方法来做你所描述的。

你可以在短信后触发PUSH通知吗?

线程: Android是否支持近实时推送通知?

也许你应该更换

content://sms

content://sms/inbox

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM