onReceive of BroadcastReceiver无效。
我正在尝试不同的方式。
这是我目前的代码。
活动代码
BroadcastReceiver _receiver;
public static final String SMS_RECEIVED_ACTION =
"android.provider.Telephony.SMS_RECEIVED";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
IntentFilter _intentFilter = new IntentFilter(SMS_RECEIVED_ACTION);
_intentFilter.setPriority(1234567);
registerReceiver(_receiver,_intentFilter);
_receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context,"Hello",Toast.LENGTH_LONG).show();
}
};
}
清单文件
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.SEND_SMS"></uses-permission>
答案 0 :(得分:1)
在注册之前创建_receiver
_intentFilter.setPriority(999);
_receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context,"Hello",Toast.LENGTH_LONG).show();
}
};
registerReceiver(_receiver,_intentFilter);
priority
应大于-1000且小于1000
文档
机器人:优先 关于处理过滤器描述的类型的意图应该给予父组件的优先级。该属性对活动和广播接收者都有意义:
它提供了有关活动如何响应与筛选器匹配的意图的信息,相对于也可以响应意图的其他活动。当具有不同优先级的多个活动可以处理意图时,Android将仅考虑具有较高优先级值的活动作为意图的潜在目标。
它控制广播接收器执行接收广播消息的顺序。具有较高优先级值的那些在具有较低值的那些之前被调用。 (该命令仅适用于同步消息;对于异步消息,它会被忽略。) 仅当您确实需要强制接收广播的特定订单时,或者想要强制Android更喜欢一项活动而不是其他活动时,才使用此属性。
值必须是整数,例如&#34; 100&#34;。数字越大,优先级越高。默认值为0.该值必须大于-1000且小于1000。