• android入门——BroadCast(1)


    使用广播要定义一个广播接收类,如

     1 package com.example.wkp.broadcast;
     2 
     3 import android.content.BroadcastReceiver;
     4 import android.content.Context;
     5 import android.content.Intent;
     6 import android.os.Bundle;
     7 import android.telephony.SmsMessage;
     8 import android.util.Log;
     9 
    10 /**
    11  * Created by wkp on 2016/9/20.
    12  */
    13 public class MyReceiver extends BroadcastReceiver {
    14     @Override
    15     public void onReceive(Context context, Intent intent) {
    16         //第一个参数携带Receiver运行信息 第二个参数携带广播的详细内容
    17         Log.v("hh","get smsMessage");
    18         //取出intent数据
    19         Bundle bundle=intent.getExtras();
    20         //得到短信实体,一个SmsMessage对象可以保存140字节,号码在数组的0号,后面的全部是内容
    21         //如果内容太多,那么SmsMessage数组的长度就会很大
    22         Object[] object=(Object[])bundle.get("pdus");
    23         SmsMessage[] messages=new SmsMessage[object.length];
    24         for(int i=0;i<messages.length;i++){
    25             messages[i]=SmsMessage.createFromPdu((byte[])object[i]);
    26             //得到短信内容
    27             Log.v("hehe",messages[i].getOriginatingAddress());
    28 
    29         }
    30         //得到短信号码
    31         Log.v("haha",messages[0].getMessageBody());
    32     }
    33 }
    MyReceiver.java

    可以采用动态和静态注册广播两种形式

    静态:

     <!--静态注册 -->
    <receiver android:name=".MyReceiver">
    <intent-filter>
    <!-- 动作 打开飞行模式时触发广播 -->
    <!--<action android:name="android.intent.action.AIRPLANE_MODE"/>-->
    <!-- 收到短信时 暂时无法实现 -->
    <!--<action android:name="android.provider.Telephony.SMS_RECEIVED"/>-->
    <!--<action android:name="android.provider.Telephony.SMS_DELIVER"/>-->
    </intent-filter>
    </receiver>


    动态:onCreate方法中
    //        动态注册
    // 动态注册不启动app广播无效
    IntentFilter filter=new IntentFilter();
    //开关飞行模式时接收广播
    filter.addAction("android.intent.action.AIRPLANE_MODE");
    //filter.addAction("android.provider.Telephony.SMS_RECEIVED");
    registerReceiver(receiver,filter);
  • 相关阅读:
    Java分享笔记:关于Java反射机制
    Java分享笔记:自定义枚举类 & 使用enum关键字定义枚举类
    Java分享笔记:RandomAccessFile流 & 在文件指定位置插入内容
    Spark-源码-SparkContext的初始化
    Spark-源码-Spark-StartAll Master Worler启动流程
    Spark-源码-Spark-Submit 任务提交
    Hadoop2学习路程-HDFS
    JavaSE 第二次学习随笔(五)
    JavaSE 第二次学习随笔(四)
    JavaSE 第二次学习随笔(三)
  • 原文地址:https://www.cnblogs.com/wangkaipeng/p/5893212.html
Copyright © 2020-2023  润新知