Android 系统常用广播BroadcastReceiver总结

以下是常用系统action

系统操作 action
监听网络变化 android.net.conn.CONNECTIVITY_CHANGE
关闭或打开飞行模式 Intent.ACTION_AIRPLANE_MODE_CHANGED
充电时或电量发生变化 Intent.ACTION_BATTERY_CHANGED
电池电量低 Intent.ACTION_BATTERY_LOW
电池电量充足(即从电量低变化到饱满时会发出广播 Intent.ACTION_BATTERY_OKAY
系统启动完成后(仅广播一次) Intent.ACTION_BOOT_COMPLETED
按下照相时的拍照按键(硬件按键)时 Intent.ACTION_CAMERA_BUTTON
屏幕锁屏 Intent.ACTION_CLOSE_SYSTEM_DIALOGS
设备当前设置被改变时(界面语言、设备方向等) Intent.ACTION_CONFIGURATION_CHANGED
插入耳机时 Intent.ACTION_HEADSET_PLUG
未正确移除SD卡但已取出来时(正确移除方法:设置--SD卡和设备内存--卸载SD卡) Intent.ACTION_MEDIA_BAD_REMOVAL
插入外部储存装置(如SD卡) Intent.ACTION_MEDIA_CHECKING
成功安装APK Intent.ACTION_PACKAGE_ADDED
成功删除APK Intent.ACTION_PACKAGE_REMOVED
下载并且成功安装 intent.action.PACKAGE_INSTALL
重启设备 Intent.ACTION_REBOOT
屏幕被关闭 Intent.ACTION_SCREEN_OFF
屏幕被打开 Intent.ACTION_SCREEN_ON
关闭系统时 Intent.ACTION_SHUTDOWN
重启设备 Intent.ACTION_REBOOT

那我们如何使用呢

动态注册方式:

public class MainActivity extends Activity {

    private ScreenReceiver screenReceiver;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        //动态的去注册广播接收者 
        
        screenReceiver = new ScreenReceiver();
        
        //创建IntentFilter 对象
        IntentFilter filter = new IntentFilter();
        
        //添加要注册的action
        filter.addAction("android.intent.action.SCREEN_OFF");
        filter.addAction("android.intent.action.SCREEN_ON");
        //动态注册广播接收者
        registerReceiver(screenReceiver, filter);
        
        
    }

    @Override
    protected void onDestroy() {
        
        //当activity 销毁的时候要取消注册广播接收者 
        unregisterReceiver(screenReceiver);
        
        super.onDestroy();
    }
}
public class ScreenReceiver extends BroadcastReceiver {

    //当我们进行屏幕锁屏和解锁 这个方法执行 
    @Override
    public void onReceive(Context context, Intent intent) {

        //获取当前广播的事件类型 
        String action = intent.getAction();
        if("android.intent.action.SCREEN_OFF".equals(action)){
            System.out.println("屏幕锁屏了 ");
            
        }else if ("android.intent.action.SCREEN_ON".equals(action)) {
            System.out.println("屏幕解锁了");
        }
        
        
        
    }

}

静态注册

直接写BroadcastReceiver文件,MainAndroidfast.XML配置

public class SdcardStateReceiver extends BroadcastReceiver {

    //当sd状态发生改变的时候执行
    @Override
    public void onReceive(Context context, Intent intent) {

        //获取到当前广播的事件类型
        String action = intent.getAction();
        
        if ("android.intent.action.MEDIA_MOUNTED".equals(action)) {
            System.out.println("说明sd卡挂载了 ....");
        }else if ("android.intent.action.MEDIA_UNMOUNTED".equals(action)) {
            System.out.println("说明sd卡卸载了 ");
        }
        
        
    }

}

            
                
                
                
                
                 
            
        

你可能感兴趣的:(Android 系统常用广播BroadcastReceiver总结)