Android8.0以上监听开关机,息亮屏,解锁等系统广播轻松实现
16lz
2021-01-24
随着Android版本越来越高,对用户得体验效果极好,但是苦逼了我们这些开发人员,但是办法总比困难多!!!
闲话不多说,直接进入正题:
Android系统启动完成后会发出启动完成广播(android.intent.action.BOOT_COMPLETED),所有注册了接收启动完成广播的接收器(BroadcastReceiver)都会收到此广播。相对应也会收到关机完成广播(android.intent.action.ACTION_SHUTDOWN);
不同的是开机广播需要在AndroidManifest.xml文件里添加授予应用程序访问系统开机事件的权限
权限到位,接下就是自定义咱们自己所需要的广播接收器,用于接收广播内容;
/** * @创建时间 2019/4/19. * @作者 Manuel * @描述 接收器 */public class BootCompletedReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { switch (intent.getAction()){ case Intent.ACTION_BOOT_COMPLETED: Log.e("TAG","手机开机了"); break; case Intent.ACTION_SHUTDOWN: Log.e("TAG","手机关机了"); break; case ACTION_SCREEN_ON: Log.e("TAG","亮屏"); break; case ACTION_SCREEN_OFF: Log.e("TAG","息屏"); break; case ACTION_USER_PRESENT: Log.e("TAG","手机解锁"); break; } }}
接收器搞定当然就是咱们的注册广播咯,那大家都知道静态和动态注册, 下面分别以两种模式进行实现:
这是静态申请的权限:
下面是动态申请
package com.huibo.myphonerestart;import android.content.Intent;import android.content.IntentFilter;import android.net.ConnectivityManager;import android.net.wifi.WifiManager;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;/** * @创建时间 2019/4/19. * @作者 Manuel * @描述 活动 */public class MainActivity extends AppCompatActivity { private BootCompletedReceiver bootCompletedReceiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bootCompletedReceiver = new BootCompletedReceiver(); IntentFilter intentFilter = new IntentFilter(); //亮屏 intentFilter.addAction(Intent.ACTION_SCREEN_ON); //息屏 intentFilter.addAction(Intent.ACTION_SCREEN_OFF); //解锁 intentFilter.addAction(Intent.ACTION_USER_PRESENT); registerReceiver(bootCompletedReceiver,intentFilter); } @Override protected void onDestroy() { super.onDestroy(); if (bootCompletedReceiver!=null){ unregisterReceiver(bootCompletedReceiver); } }}
注意:动态注册完之后,在不用的时候取消注册,所有在onDestroy 我们进行取消注册,这样就不会造成内存泄露问题。
如发现没有接收到开关机广播监听内容,这就说明手机系统进行了一些拦截,请给自己的项目加上自启动,完美搞定。
祝大家在Android的道路上越走越远!!!
更多相关文章
- Android重力感应 .
- 诺基亚跟微软合作----出乎意料但在情理中
- flutter +Android(安卓)studio+Xcode 调试iphone手机App程序(Mac
- web test LoadRunner Android(安卓)/ APK / android sdk / IOS /
- android 怎么判断手机号是移动还是联通
- 关于android中drawable—hdpi、drawable—mdpi、drawable—ldpi
- 传智播客Android视频教程——第三天
- 详解Android(安卓)手机卫士设置向导页面
- 【Android中Broadcast Receiver组件具体解释 】