Android工程搭建

  • BroadCastReceiver
    • 一、BroadCastReceiver介绍
  • 二、如何实现广播
      • A、广播接受者
      • B、广播发送方:sendBroadcast(Intent意图对象)
  • 三、代码
        • A、无序广播
            • 静态注册
            • 动态注册
        • B、有序广播
        • C、发送的方法
            • 1.无序 : sendBroadcast()
            • 2.有序 : sendOrderBroadcast()
            • 3. 粘性 : sendStickyBroadcast()
  • 四、系统广播

BroadCastReceiver

一、BroadCastReceiver介绍

BroadCastReceiver广播接受者,安卓四大组件之一广播三要素:(1)广播发送者 :       发送广播(2)广播接收者(调频):      用于接收广播(3)要处理的事情  :处理广播的相关信息, Intent有图对象广播的使用场景:(1)同一APP下多个组件之间传递数据(Activity/Fragment/Service之间传递数据)(2)2个APP之间传递数据技能get点:(1)自定义广播接受者(2)使用广播接受者进行电话拦截和短信拦截和系统电量的变化

二、如何实现广播

A、广播接受者

(1)自定义类继承BroadcastReceiver,重写onReceive方法
(2)注册广播(安卓的四大组件都需要注册)
静态注册:在清单文件中
动态注册:在代码中注册(注册和接触注册)

B、广播发送方:sendBroadcast(Intent意图对象)

静态注册和动态注册的区别:假如说Activity是接受者:动态注册:(1)广播会跟Activity的生命周期的结束而结束;(2)自由的控制注册和取消,有很大的灵活性(3)动态注册在结束应用时就会消失静态注册:(1)广播不会跟随Activity的生命周期的结束而结束,一直存在,即使应用程序关闭,也会被唤醒接受广播(2)全局的广播(3)静态注册除非下载应用,否则会一直存在

三、代码

注册、解除注册

onCreate():注册广播调用Context的registerReceiver()方法onDestory():解除注册调用Context的unregisterReceiver()方法

A、无序广播

public class MyBroadcast extends BroadcastReceiver {    @Override    public void onReceive(Context context, Intent intent) {        if(intent.getAction().equals("com.xh.broad")){            String mes = intent.getStringExtra("mes");            Toast.makeText(context, "开始广播:"+mes, Toast.LENGTH_SHORT).show();        }    }}
静态注册

清单文件注册

<!-- 注册广播 -->        <receiver android:name=".MyBroadcast">            <intent-filter>                <!-- 频道 -->                <action android:name="com.xh.broad" />            </intent-filter>        </receiver>
动态注册
protected void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.activity_main);//动态注册广播     myBroadcast2 = new MyBroadcast2(this);     IntentFilter intentFilter = new IntentFilter();     intentFilter.addAction("com.xh.broad.dong");     registerReceiver(myBroadcast2,intentFilter);}@Override    protected void onDestroy() {        super.onDestroy();        //销毁广播        unregisterReceiver(myBroadcast2);    }

B、有序广播

特点

无序广播无法掐断广播有序广播可以掐断广播优先级从大到小

有序广播的方法

//掐断广播            abortBroadcast();

清单注册

<!-- 有序广播:范围-10001000 -->        <receiver android:name=".order.MyBroadcast_wu">            <intent-filter android:priority="-1000"><!-- 优先级 -->                <action android:name="com.xh.order"></action>            </intent-filter>        </receiver>        <receiver android:name=".order.MyBroadcast_you">            <intent-filter android:priority="1000">                <action android:name="com.xh.order"></action>            </intent-filter>        </receiver>

C、发送的方法

1.无序 : sendBroadcast()
2.有序 : sendOrderBroadcast()
3. 粘性 : sendStickyBroadcast()

四、系统广播

https://blog.csdn.net/cc_want/article/details/82344899

public class MainActivity extends AppCompatActivity {    MyBroad myBroad;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        myBroad = new MyBroad();        IntentFilter intentFilter = new IntentFilter();        intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED);//电量改变        intentFilter.addAction(Intent.ACTION_BATTERY_LOW);//低电量        intentFilter.addAction(Intent.ACTION_BATTERY_OKAY);//电量充足        intentFilter.addAction(Intent.ACTION_SCREEN_ON);//开屏        intentFilter.addAction(Intent.ACTION_SCREEN_OFF);//锁屏        intentFilter.addAction(Intent.ACTION_AIRPLANE_MODE_CHANGED);//飞行模式改变        intentFilter.addAction(Intent.ACTION_CAMERA_BUTTON);//按下拍照键时        intentFilter.addAction(Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE);//正在移动APP时,发出的广播        intentFilter.addAction(Intent.ACTION_HEADSET_PLUG);//在耳机口上插入耳机时发出的广播        registerReceiver(myBroad,intentFilter);    }}
public class MyBroad extends BroadcastReceiver {    @Override    public void onReceive(Context context, Intent intent) {        if(intent.getAction().equals(Intent.ACTION_BATTERY_CHANGED)){//电量发生改变            int level = intent.getIntExtra("level", 0);            Toast.makeText(context, "当前电量:"+level, Toast.LENGTH_SHORT).show();        }else if(intent.getAction().equals(Intent.ACTION_BATTERY_LOW)){//低电量            Toast.makeText(context, "当前电量过低,请及时充电!", Toast.LENGTH_SHORT).show();        }else if(intent.getAction().equals(Intent.ACTION_BATTERY_OKAY)){//电量充足            Toast.makeText(context, "电量充足!", Toast.LENGTH_SHORT).show();        }else if(intent.getAction().equals(Intent.ACTION_SCREEN_OFF)){//锁屏            Toast.makeText(context, "锁屏!", Toast.LENGTH_SHORT).show();        }else if(intent.getAction().equals(Intent.ACTION_SCREEN_ON)){//开屏            Toast.makeText(context, "开屏!", Toast.LENGTH_SHORT).show();        }else if(intent.getAction().equals(Intent.ACTION_AIRPLANE_MODE_CHANGED)){//飞行模式改变            Bundle extras = intent.getExtras();            String state = extras.get("state").toString();            if(state.equals("true")){                Toast.makeText(context, "开启飞行:"+state, Toast.LENGTH_SHORT).show();            }else if(state.equals("false")){                Toast.makeText(context, "关闭飞行:"+state, Toast.LENGTH_SHORT).show();            }        }else if(intent.getAction().equals(Intent.ACTION_CAMERA_BUTTON)){//按下拍照键            Toast.makeText(context, "拍照了:", Toast.LENGTH_SHORT).show();        }else if(intent.getAction().equals(Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE)){//正在移动APP时,发出的广播            Toast.makeText(context, "正在移动APP时,发出的广播:", Toast.LENGTH_SHORT).show();        }else if(intent.getAction().equals(Intent.ACTION_HEADSET_PLUG)){//在耳机口上插入耳机时发出的广播            boolean state = intent.hasExtra("state");            if(state){                int extra = intent.getIntExtra("state", 0);                if(extra==0){                    Toast.makeText(context, "拔出耳机", Toast.LENGTH_SHORT).show();                }else{                    Toast.makeText(context, "插入耳机", Toast.LENGTH_SHORT).show();                }            }        }    }}

更多相关文章

  1. android:priority
  2. Android(java)学习笔记123:Clock app编写报错01
  3. Android之Widget (微件、小组件)
  4. Android平台上PMEM的使用及Platform设备注册(二)
  5. Android(安卓)Launcher 应用的安装、更新、移除介绍
  6. 曾经的笔记——android的学习笔记(广播接收者)
  7. BroadcastReceive介绍
  8. Android使用广播(BroadCast)实现强制下线的方法
  9. android用服务service与广播broadcastreceiver创建开机启动服务

随机推荐

  1. 监听电话状态
  2. android WebView 应用内点击超链接不调用
  3. 《Android.Programming.Pushing.the.Limi
  4. Android 自定义设置文本字体间间距
  5. Android下的junit 单元测试
  6. Android 上下文菜单
  7. Android AsyncTask Download
  8. MVC架构设计与经典三层模型
  9. Android手机访问web服务器(post请求)
  10. Android之Spinner解析