java – Android SMS API

java – Android SMS API,第1张

概述我知道SMS内容提供商不是公共API的一部分(至少没有记录),但如果我理解正确,只要您知道如何使用API​​(?),仍然可以使用许多SMS功能. 例如,将SMS插入收件箱非常简单: ContentValues values = new ContentValues(); values.put("address", "+457014921911"); contentResolver.insert 我知道SMS内容提供商不是公共API的一部分(至少没有记录),但如果我理解正确,只要您知道如何使用API​​(?),仍然可以使用许多SMS功能.

例如,将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应用程序没有正确检测短信?或者我错了?

解决方法 不幸的是,负责这些通知的代码隐藏在 messaging application中.类 MessagingNotification有一个静态方法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",c)    .getmethod("updateallNotifications",context);

由于几个原因,This显然是very bad idea,但我想不出另一种方法来做你所描述的.

总结

以上是内存溢出为你收集整理的java – Android SMS API全部内容,希望文章能够帮你解决java – Android SMS API所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1148227.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存