短信广播接收器一直收不到广播,但是有成功注册了Receiver了
来源:8-2 短信提醒—自定义广播接收器监听短信

Chitose
2018-03-11
短信权限我也做了: <!--接受短信权限 --> <uses-permission android:name="android.permission.RECEIVE_SMS" />
接收短信的Action:
public static final String SMS_ACTION ="android.provider.Telephony.SMS_RECEIVED";
Service代码如下(主要问题:“Start Service” 的log是能发出去的,就是能成功注册Receiver吧,但接收短信时就是进不去onReceive,虚拟机和真机都试过了)
public class MsgService extends Service{ private SmsReceiver receiver; @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate(){ super.onCreate(); init(); } private void init() { L.e("Start Service"); //动态注册 receiver = new SmsReceiver(); IntentFilter intent = new IntentFilter(); //添加Action intent.addAction(StaticClass.SMS_ACTION); //设置优先权 intent.setPriority(Integer.MAX_VALUE); //注册 registerReceiver(receiver, intent); L.e("Start Service"); } @Override public void onDestroy(){ super.onDestroy(); L.e("Stop Service"); unregisterReceiver(receiver); } public class SmsReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { L.e("Msg got.");//接收不到 String action = intent.getAction(); if(StaticClass.SMS_ACTION.equals(action)){ L.e("Msg got.");//接收不到 } } } }
写回答
2回答
-
慕码人2108295
2019-05-07
说直白一点吧,在setting活动中的startService之前进行动态权限申请即可,具体的可以看老师git仓库里readme中附录的百度云视频
00 -
Chitose
提问者
2018-03-14
已解决!
022018-04-17
相似问题