随着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的道路上越走越远!!!

 

 

 

 

更多相关文章

  1. Android重力感应 .
  2. 诺基亚跟微软合作----出乎意料但在情理中
  3. flutter +Android(安卓)studio+Xcode 调试iphone手机App程序(Mac
  4. web test LoadRunner Android(安卓)/ APK / android sdk / IOS /
  5. android 怎么判断手机号是移动还是联通
  6. 关于android中drawable—hdpi、drawable—mdpi、drawable—ldpi
  7. 传智播客Android视频教程——第三天
  8. 详解Android(安卓)手机卫士设置向导页面
  9. 【Android中Broadcast Receiver组件具体解释 】

随机推荐

  1. Android学习笔记(三):Andriod程序框架
  2. android 模拟器 sdcard权限修改
  3. Android(安卓)开源项目分类汇总
  4. Android主线程、子线程通信(Thread+handle
  5. Android仿人人客户端(v5.7.1)——新鲜事之
  6. Android(安卓)CheckBox
  7. Debian 5 Android(安卓)编译
  8. Android上传文件到服务器
  9. [转帖]把JML移植到Android上
  10. android 几何图形的绘制