如何以编程方式更改默认应用?

时间:2013-11-27 16:13:37

标签: android android-intent sms broadcastreceiver

我有一个拥有设备管理员权限的应用。我的应用程序监视器收到SMS并通过一些逻辑传递内容。我可以以编程方式将默认SMS应用程序更改为我的应用程序。我的应用程序检查垃圾邮件,因此需要读取/写入/更新SMS数据库。我想修复kitkat。

我刚刚注意到,我的应用上的传入短信通知不再是收到的新短信的通知,而是接收传入短信的环聊导致的“新环聊短信”通知。所以我的应用程序也无法使用SMS_RECEIVED接收传入的短信。

Google的Android开发者博客文章介绍了Kitkat中的新SMS API,并表示只使用SMS_RECEIVED的应用程序不会改变,也不会尝试将短信写入SMS提供商。

1我一直认为SMS_RECEIVED广播是可以中止的。但是Android 4.4 API网站说了一些不同的东西:“...当一个新的短信到达时,通过收听SMS_RECEIVED_ACTION广播,这是一个不可中止的广播...”

1 个答案:

答案 0 :(得分:6)

  

我可以以编程方式将默认短信应用更改为我的应用

不直接。您可以提示用户更改默认的SMS应用程序。

  

我的应用检查垃圾邮件

将您的代码重新打包为库并将其许可给SMS客户端。

  

因此,Pebble应用程序也无法使用SMS_RECEIVED

接收传入的短信

可能Pebble应用程序只是遇到其他问题,并且在通知Pebble之前崩溃了。或者,Pebble应用程序可能会针对Android 4.4进行更新,因为它知道无法停止环聊通知,只需自行抑制它。

  

Google的Android开发者博客文章介绍了Kitkat中的新SMS API,表示只使用SMS_RECEIVED并且不尝试将短信写入SMS提供商的任何内容都不会改变

那不是this blog post says

  

我一直认为SMS_RECEIVED广播是可以中止的

此无证件,不受支持的广播是通过Android 4.3进行的有序,可中止的广播。 Android 4.4已不再是这种情况,您可以通过阅读上述博客文章来了解:

  

请注意 - 从Android 4.4开始 - 您的应用尝试中止SMS_RECEIVED_ACTION广播的任何尝试都将被忽略,因此所有感兴趣的应用都有机会接收它。