接收系统广播
Android 内置了大量系统广播,在相应事件发生时都会发出广播,开发者可以直接接收这些广播信息,并以此来实现丰富的软件功能,如网络断开时提醒、电量提醒、锁屏桌面、开机启动、短信拦截等。常见的系统广播及标识 Action 常量如下表:
系统广播常量列表:
效果图:
在这里插入图片描述
MainActivity.java
public class MainActivity extends AppCompatActivity {
BatteryBroadcastReciver batteryBroadcastReciver;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.tv_show);
}
@Override
protected void onResume() {
super.onResume();
batteryBroadcastReciver = new BatteryBroadcastReciver(); // 注册广播
IntentFilter intentFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
registerReceiver(batteryBroadcastReciver,intentFilter);
}
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(batteryBroadcastReciver); // 关闭广播消息
}
public class BatteryBroadcastReciver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_BATTERY_CHANGED)){
// 如果系统发出的消息是关于电量的
int level = intent.getIntExtra("level",0); // 当前电量
int total = intent.getIntExtra("scale",100); // 总电量
textView.setText("当前变量: " + (level*100) / total + "%"); // (当前电量*100)/ 总电量
if (level < 85){
// 当电量小于%85时
Toast.makeText(MainActivity.this,"当前电量已小于 85%",Toast.LENGTH_LONG).show();
}
}
}
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/tv_show"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="显示"
android:layout_centerInParent="true"/>
</RelativeLayout>