我刚刚收到了环聊2.0的更新,已安装并启用了SMS
→ Turn on SMS
。现在,我的应用程序在Android 4.3下运行,无法再接收SMS,即SMS_RECEIVED
不再调用我的BroadcastReceiver 。:-(
Turn on SMS
在Hangouts 2.0中停用后,我的应用程式即可再次收到SMS_RECEIVED意向。
广播接收器像这样在清单中注册
AndroidManifest.xml
…
<receiver android:name=".SMSReceiver" >
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
…
SMSReceiver.java
public class SMSReceiver extends BroadcastReceiver {
private static final Log LOG = Log.getLog();
@Override
public void onReceive(Context context, Intent intent) {
LOG.d("onReceive");
…
}
}
我已经尝试将接收器的优先级更改为INT_MAX或999,这是意图过滤器文档中可能的最高优先级,但是没有成功。我知道SMS_RECEIVED
意图是按顺序发送的,并且高优先级的应用程序可以中止广播。1但Hangouts 2.0似乎不太可能SMS_RECEIVED
以高优先级注册接收者并呼叫abortBroadcast()
,因此会阻止其他任何应用接收该意图。
更让我感到困惑的是,即使将Hangouts 2.0作为默认的短信应用,我的Pebble仍然能够接收短信。我想知道Pebble有什么不同? 我只是注意到,我的Pebble上的传入SMS通知不再是Pebble应用接收到的有关新SMS的通知,而是由环聊接收传入SMS引起的“新环聊消息”通知。因此,Pebble应用程序也无法通过接收传入的短信SMS_RECEIVED
。
顺便说一句,与这个问题并没有真正的关系,因为我仍在使用Android 4.3(但我的应用程序的目标是SDK级别19,以防万一,请使用Android 4.4)。Google在Kitkat上有关新SMS API的Android开发者博客帖子说仅使用SMS_RECEIVED的应用程序不会发生任何变化,并且不要尝试将SMS写入SMS提供程序。
1我一直认为SMS_RECEIVED广播是可中止的。但是Android 4.4 API网站却说了些不同:“…当通过收听SMS_RECEIVED_ACTION广播(这是不可中断的广播)而收到一条新SMS时……”
固定它。
正如您在我的问题的修订版2中看到的那样,第一个问题是,当priority
属性action
实际上属于元素时,我将其放入intent-filter
元素中。因此,优先级无效。
在仍以API 19为目标的同时,我在启用环聊短信和不同优先级方面做了一些经验。
SMS_RECEIVED
意图SMS_RECEIVED
意图SMS_RECEIVED
意图因此,您似乎需要为优先级设置一个最小值,以便在启用环聊短信的情况下获得意图。我不费心将最低值一分为二。;)我将使用999,因为我看不出任何降低价格的原因,因为我的应用仅对接收到的短信进行了一些快速检查,并且不对其进行进一步处理。但这确实应该有所作为,因为广播不可中断。
1最大值
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句