qq_28247555 2016-01-06 11:51 采纳率: 0%
浏览 1671
已结题

android BroadcastReceiver中拦截短信后如何给回调activity

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

  • 写回答

1条回答 默认 最新

  • keyborad_boy 2016-01-07 02:38
    关注

    // 注册接收.监听短信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;
            }
        }
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突