将应用程序从Jellybean版本扩展到Kitkat以进行SMS中止广播

时间:2014-09-18 13:12:38

标签: android

我在Android上有一个短信应用程序,它在软件版本中运行良好。这个应用程序提供的功能是它从数据库中读取短信并显示它,可以使用SMSManager将短信发送到号码,在接收短信时它使用广播接收器拦截短信接收短信,如果短信是来自特定的然后它会中止短信的广播,如果短信是来自其他号码,那么它会隐藏通常的通知并创建通知。

现在我希望该应用程序同时适用于kitkat和Jellybean版本......

请帮助我如何扩展我的应用程序以提供kitkat版本的当前功能。

先谢谢

2 个答案:

答案 0 :(得分:1)

要获得KitKat所需的功能,您的应用必须是默认的短信应用。默认应用程序负责将传入消息写入提供程序,并创建相应的通知。它监听SMS_DELIVER广播,它是唯一接收广播的广播,之后它可以决定必要的行动。

无法再中止SMS_RECEIVED广播,无论如何都不会影响默认应用的行为。任何具有RECEIVE_SMS权限的应用仍会收到广播,但只有默认应用可以写入提供商。

将您的应用程序编写为默认的SMS应用程序并非易事,因为除了已经提到的内容之外,它还需要承担多项职责。以下链接详细说明了您的应用有资格成为默认值所需的内容。

Getting Your SMS Apps Ready for KitKat

答案 1 :(得分:0)

RSH,正如上面提到的Mike M所说,中止短信接收广播不再可能,在Kitkat之前你可以用一个大号的任意大号注册你的接收器作为优先权,并且在接收时将中止相同的。但是当在kitkat中完成同样的操作时,不再会产生理想的输出。

但是在解决方法中,您可以尝试将其绕过它。

“当收到短信时,它会被插入到SMS数据库中,您需要做的就是找出新插入的短信来自特定记录并从数据库中删除相同的内容,并为您的应用保留本地副本用于显示“

这不是一个全面的解决方案,但我想它可能会产生你正在看的输出,只是尝试实现相同的。