BroadcastReceiver之(手动代码注册广播)屏幕锁屏、解锁监听、开机自启

2023-03-15,,

对于解锁和锁屏这种用的比较频繁action,谷歌做了限制,必须手动用代码注册

直接上代码:这是注册广播(手动代码注册广播接收者)

 public class MainActivity extends AppCompatActivity {
     Screen screen;
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
      
         screen = new Screen();
         IntentFilter filter = new IntentFilter();
         //添加action
         filter.addAction("android.intent.action.SCREEN_OFF");
         filter.addAction("android.intent.action.SCREEN_ON");
         //注册广播接收者
         this.registerReceiver(screen,filter);
     }

     @Override
     protected void onDestroy() {
         super.onDestroy();
         unregisterReceiver(screen);
     }
 public class Screen extends BroadcastReceiver {
     @Override
     public void onReceive(Context context, Intent intent) {
         String action = intent.getAction();
         if (action.equals("android.intent.action.SCREEN_OFF")){
             System.out.println("屏幕锁屏了");
         }else if (action.equals("android.intent.action.SCREEN_ON")){
             System.out.println("屏幕解锁了");
         }
     }
 }

下面是开机自启:

老套路,新建一个类继承于BroadcastReceiver,然后配置清单文件

 <receiver android:name="com.itheima.bootreceiver.BootReceiver">
             <intent-filter >
                 <action android:name="android.intent.action.BOOT_COMPLETED"/>
             </intent-filter>
         </receiver>

然后就是onReceiver方法:

 public class BootReceiver extends BroadcastReceiver {

     //当手机重启会执行这个方法
     @Override
     public void onReceive(Context context, Intent intent) {

         //开启mainActivity
         Intent intent2 = new Intent(context,MainActivity.class);
         //☆ 如果在广播里面开启Activity 要设置一个任务栈环境
         intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         //在广播接收者里面开启activity
         context.startActivity(intent2);

     }

 }

注意:

intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);一定要加上一个

BroadcastReceiver之(手动代码注册广播)屏幕锁屏、解锁监听、开机自启的相关教程结束。

《BroadcastReceiver之(手动代码注册广播)屏幕锁屏、解锁监听、开机自启.doc》

下载本文的Word格式文档,以方便收藏与打印。