短信广播接收器一直收不到广播,但是有成功注册了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中附录的百度云视频

//img.mukewang.com/szimg/5cd07c3c0001317811890595.jpg


0
0

Chitose

提问者

2018-03-14

已解决!

0
2
Chitose
回复
淮左名都
需要获取动态权限,你可以去查一查
2018-04-17
共2条回复

带领新手快速开发Android App

【毕设】用热门Android SDK及框架,快速开发一个Android App

1498 学习 · 393 问题

查看课程