大家好,今天给大家讲的是四大组件之一BroadCast广播,广播是一个没有界面,需要注册,依靠Activity界面方可执行广播的功能,开发中很常用到广播,比如说,电量不足,短信来电这些通知功能,就需要系统发出广播,从而功能实现通知。下面给大家讲解广播注册的三种方式,因为广播是没有界面的,所以就不能上图了。
第一种方式:静态注册
1.androidManifest.xml
<!-- 广播静态注册,注册一个时间改变的 -->
<receiver
android:name="com.example.broadcast.TimeChange">
<intent-filter>
<action android:name="android.intent.action.TIME_SET" />
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</receiver>
2.TimeChange.java
//继承BroadCastReceive
public class TimeChange extends BroadcastReceiver {
//广播接受者
public void onReceive(Context context, Intent intent) {
//intent.getAction得到广播进行判断
if(intent.getAction().equals(Intent.ACTION_TIME_CHANGED)){
Toast.makeText(context, "时间改变了TimeChange", Toast.LENGTH_SHORT).show();
}
}
}
2.第二种方式:动态注册,Intentfilter--->addAction--->registerReceiver
1.MainActivity.java
//定义MyReceiver
private MyReceiver receiver;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化receiver
receiver = new MyReceiver();
//意图过滤器
IntentFilter filter = new IntentFilter();
//添加过滤广播条件
filter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
//注册广播
registerReceiver(receiver, filter);
}
@Override
protected void onDestroy() {
//销毁广播
unregisterReceiver(receiver);
super.onDestroy();
}
//广播接着,继承BroadCastReceiver
private class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//得到广播,进行判断
if (intent.getAction().equals(Intent.ACTION_TIMEZONE_CHANGED)) {
Toast.makeText(context, "时区改变", Toast.LENGTH_SHORT).show();
}
}
}
}
第三种方式:3.动态注册自定义注册:Intent-->intent.setAction()--->intent.getAction()
第三种方式是自定义注册,添加一个点击按钮进行监听,发广播。
public class MainActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//点击事件
public void send(View v) {
//Intent意图,实现跳转
Intent intent = new Intent(MainActivity.this,TimeChange.class);
//自定义setAction,添加新的广播
intent.setAction("HAHAHA");
//发广播
sendBroadcast(intent);
}
}
TimeChange.java
//广播接受者
public class TimeChange extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
//得到新填的广播
if(intent.getAction().equals("HAHAHA")){
Toast.makeText(context, "哈哈哈", Toast.LENGTH_SHORT).show();
}
}
}
今天就讲到这里了,广播的三种实现方式,虽然简单,但很实用。晚安,明天又是新的开始。