我正在制作一款自动响应传入短信的Android应用。它会在BroadcastReceiver
AndroidManifest.xml
检测传入的短信
<receiver android:name=".receiver.SMSBroadcastReceiver" >
<intent-filter android:priority="1000" >
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
其中SMSBroadcastReceiver
如下
public class SMSBroadcastReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
// code here to deal with message etc.
}
}
这一切都正常。当我安装Facebook Messenger并同时检查“打开短信”和“用作主要短信应用”时出现问题:
使用这些设置onReceive(Context context, Intent intent)
现在永远不会被调用,因此对于使用此应用程序或其他第三方SMS应用程序的用户,我的应用程序无效!
我已经意识到fbook可能会在它到达我的应用程序之前调用abortBroadcast();
,如果它有更高的优先级,但我已经优先考虑maximum of 1000
答案 0 :(得分:1)
我意识到abortBroadcast()可能就是这种情况; fbook在进入我的应用程序之前被调用,如果它具有更高的优先级,但我已经将优先级设置为最大值1000。
这不是最大值。这就是文档所说的最大值。最大值为2,147,483,647左右(最大正整数)。
您拥有比其他所有SMS客户端更高的优先级是不切实际的,因为任何人都可以声明他们的最大值。只需告知您的用户其他短信应用可能会干扰您的用户。