第一步,注册升级App程序广播

                                                                                                        

第二步,实现当前注册的这个广播

public class UpdateReceiver extends BroadcastReceiver {    private static final String TAG = UpdateReceiver.class.getSimpleName();    @Override    public void onReceive(Context context, Intent intent) {        String packageName = intent.getDataString();        if (intent.getAction().equals(Intent.ACTION_PACKAGE_REPLACED)) {//接收升级广播            Logger.e(TAG, "onReceive:升级了一个安装包,重新启动此程序");            if (packageName.equals("package:" + SystemUtil.getPackageName())) {                RestartAPPTool.restartAPP(context);//升级完自身app,重启自身            }        } else if (intent.getAction().equals(Intent.ACTION_PACKAGE_ADDED)) {//接收安装广播            Logger.e(TAG, "onReceive:安装了" + packageName);            if (packageName.equals("package:" + SystemUtil.getPackageName())) {                /*SystemUtil.reBootDevice();*/            }        } else if (intent.getAction().equals(Intent.ACTION_PACKAGE_REMOVED)) { //接收卸载广播            Logger.e(TAG, "onReceive:卸载了" + packageName);        }    }}

附上app重启的代码:

/**     * 重启整个APP     * @param context     */    public static void restartAPP(Context context){        Intent intent = context.getPackageManager()                .getLaunchIntentForPackage(KursaalApp.context.getPackageName());        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);        context.startActivity(intent);        ActManager.getAppManager().finishAllActivity();    }

最后再加个开机启动权限

 

更多相关文章

  1. Android 改变屏幕亮度时需添加权限
  2. Android应用程序键盘(Keyboard)消息处理机制分析(2)
  3. Android APP OPS移除应用程序项目的修改方法
  4. Android自适应不同版本的程序退出方法
  5. android 一个应用程序的启动
  6. 当程序运行时强制屏幕一直活动不被关掉

随机推荐

  1. JavaScript 数组常见操作 (二)
  2. Web Components系列(一) —— 概述
  3. 【北亚数据恢复】MongoDB数据迁移过程中
  4. Chrome浏览器配置阿里云DNS方法
  5. PHP的8种数据变量、for&foreach循环语句
  6. 复制mysql数据表里的多条记录,并插入表里
  7. VueRouter报错:NET::ERR_ABORTED 404
  8. CentOS 8 EOL如何切换源?
  9. 【北亚数据恢复】MSSQL 2000 提示“错误
  10. 云服务器安全吗?如何设置?