开发者社区> 问答> 正文

关于android BroadcastReceiver中拦截短信后怎么给回调activity

(4.3之前的)应该是调用接口,但具体的回调接口不清楚,也不清楚如何自动刷新

展开
收起
爵霸 2016-03-18 14:13:43 2416 0
1 条回答
写回答
取消 提交回答
  • // 注册接收.监听短信receiver
     smsReceiver = new SMSReceiver();
     IntentFilter receiverFilter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
     registerReceiver(smsReceiver, receiverFilter);
        /**
     * 监听接收到的短信
     * @author Administrator
     */
    class SMSReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            // TODO Auto-generated method stub
            if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) {
                Object[] pdus = (Object[]) intent.getExtras().get("pdus");
                // 不知道为什么明明只有一条消息,传过来的却是数组,也许是为了处理同时同分同秒同毫秒收到多条短信
                // 但这个概率有点小
                SmsMessage[] message = new SmsMessage[pdus.length];
                StringBuilder sb = new StringBuilder();
                System.out.println("pdus长度" + pdus.length);
                String address = "";
                for (int i = 0; i < pdus.length; i++) {
                    // 虽然是循环,其实pdus长度一般都是1
                    message[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
                    sb.append(message[i].getDisplayMessageBody());
                }
                System.out.println(sb.toString());
                register_code_et.setText(sb.toString().substring(8, 14));
                return;
            }
        }
    }
    2019-07-17 19:06:34
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载