有这样的应用场景,apk安装成功后需要重启APP,就需要监听完成安装的回调或者广播

public class UpdateReceiver extends BroadcastReceiver {

private static final String TAG = "UpdateReceiver";

@Override public void onReceive(Context context, Intent intent) {

String action = intent.getAction();

if (Intent.ACTION_PACKAGE_REPLACED.equals(action) || Intent.ACTION_MY_PACKAGE_REPLACED.equals(

action)) {

try {

String scheme = intent.getScheme();

String packageName = intent.getData().getSchemeSpecificPart();

if (context.getPackageName().equals(packageName)) {

Toast.makeText(context, "成功升级新版本!", Toast.LENGTH_SHORT).show();

Intent intent1 = new Intent(context, FlashActivity.class);

intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

context.startActivity(intent1);

}

LogMgr.d(TAG, "收到 ACTION_PACKAGE_REPLACED");

LogMgr.d(TAG, " scheme=" + scheme);

LogMgr.d(TAG, " schemeSpecificPart=" + packageName);

} catch (Exception e) {

e.printStackTrace();

}

}

}

}

这里提供一个在开发过程中用到的一个静默安装的方法,不一定适用于所有的设备:

public static void silentInstallApkByReflect(String apkPath) {

PackageManager packageManager = ContextUtils.getContext().getPackageManager();

Class> pmClz = packageManager.getClass();

try {

if (Build.VERSION.SDK_INT >= 21) {

Class> aClass = Class.forName("android.app.PackageInstallObserver");

Constructor> constructor = aClass.getDeclaredConstructor();

constructor.setAccessible(true);

Object installObserver = constructor.newInstance();

Method method =

pmClz.getDeclaredMethod("installPackage", Uri.class, aClass, int.class, String.class);

method.setAccessible(true);

method.invoke(packageManager, Uri.fromFile(new File(apkPath)), installObserver, 2, null);

} else {

Method method = pmClz.getDeclaredMethod("installPackage", Uri.class,

Class.forName("android.content.pm.IPackageInstallObserver"), int.class, String.class);

method.setAccessible(true);

method.invoke(packageManager, Uri.fromFile(new File(apkPath)), null, 2, null);

}

} catch (Exception e) {

e.printStackTrace();

}

}

Android 无法监听安装,Android关于apk安装成功广播监听相关推荐

  1. android apk安装工具,APK安装器下载-APK安装器手机版下载v2.9-1 安卓版-西西软件下载...

    APK安装器取代手机当中自带的APK安装器,让安装的界面在整体上面变得更加的好看,对于颜值有着极高要求的用户而言,虽然安装界面我们不一定能够经常的进行看到,但是界面的丑美也非常影响感官体验,感兴趣的话 ...

  2. android应用是非正式版本,Androidstudio 打包apk安装失败 应用是非正式发布版本,当前设备不支持安装...

    Androidstudio 打包apk安装失败 应用是非正式发布版本,当前设备不支持安装 环境:Androidstudio 4.0  华为手机版本 10.0 android { compileSdkV ...

  3. 2022年大厂Android高级面试题分享,安卓Apk安装过程

    现在的IT行业竞争压力越来越大,尤其是Android开发行业.而很多Android程序员却每天都在重复CRUD,原地徘徊! 今年年初,你就想改变现状,于是在网上刷了大量面试题,强行记下之后,开始参加面 ...

  4. java apk安装路径_android apk安装过程源码解析

    前言: 前一篇博客分析了一下PackageManagerService是如何解析apk的以及我们如何解析未安装apk中的androidManifest.xml文件.解析完肯定要安装的,索性写一篇关于a ...

  5. android安装apk时提示安装包异常导致安装失败,常见apk安装失败的错误及原因

    INSTALL_FAILED_NO_MATCHING_ABIS:主要是cpu架构不同导致需要的类库不同 INSTALL_FAILED_NO_MATCHING_ABIS is when you are ...

  6. android 安装应用程序apk安装不了

    今天用测试机的时候遇到这个问题 解决办法: 在设置里面找到应用程序管理安全设置,,[允许未知来源程序安装] -------------大致以上思路,具体按钮名称我就不重新去找了------------ ...

  7. 从源码角度解析Android中APK安装过程

    从源码角度解析Android中APK的安装过程 1. Android中APK简介 Android应用Apk的安装有如下四种方式: 1.1 系统应用安装 没有安装界面,在开机时自动完成 1.2 网络下载 ...

  8. android 安装器,APK安装器

    详情 APK安装器是一款最新推出的功能非常强大的安卓软件安装器.APK安装器颠覆了以往的安卓手机常规的安装方式和规则.操作非常简单,功能十分多样化,而且不会显示在你的手机桌面上占用你的手机桌面影响美观 ...

  9. Android 10.0 PackageManagerService(三)APK扫描-[Android取经之路]

    摘要:上一节讲解了PKMS的 权限扫描,扫描/system/etc/permissions中的xml,存入相应的结构体中,供之后权限管理使用. 这一节主要来讲讲APK的扫描. 阅读本文大约需要花费15 ...

最新文章

  1. 美团智能问答技术探索与实践
  2. ibase4j nginx配置
  3. mysql数据库一些可能会用到的命令
  4. iPad的无纸化办公和纯纸化办公的区别和使用场景
  5. openstack安装rabbitmq-server消息队列时出现错误
  6. Rust最受喜爱却少有人用,Python仅排第六,2021全球开发者调查报告出炉
  7. 五子棋项目结束总结_居家活动系列总结
  8. 三.激光SLAM框架学习之A-LOAM框架---项目工程代码介绍---1.项目文件介绍(除主要源码部分)
  9. python 调试代码_菜鸟世界 -借助ipython 调试代码
  10. 人工智能将为维护网络安全带来更多可能
  11. DTCMS自定义标签,获取所有栏目文章列表TOP,以及文章通用URL
  12. 常用wed扫描工具 awvs|appscan|Netsparker|Nessus
  13. Java项目开发管理工具-Maven基础
  14. NIO消息边界问题处理
  15. WebStorm中使用Git同步代码到Github
  16. Windows上软件的未来:什么是MSIX文件?
  17. 18V降压3.3V的降压IC和LDO芯片方案,15V降压3.3V的降压IC和LDO芯片方案
  18. 酷开与鸿蒙哪个好用,上手说说创维电视与酷开有区别没有?哪个好?老司机透漏评测...
  19. 计算机的信息表示(进制的转换)
  20. 深入理解ArrayList中 toArray(),toArray(T[])方法

热门文章

  1. 解决Windows Git Bash中文乱码问题
  2. TOP (100) PERCENT
  3. mac svn 可视化界面_svn for mac 操作
  4. js 连接mysql_关于Node.js 链接mysql超时处理(默认8小时)
  5. mysql每组随机一条_MySql分组后随机获取每组一条数据的操作
  6. 手机超广角拍摄软件_桂林好的拍摄短视频手机软件
  7. Vue安装配置以及入门案例
  8. springboot定时执行任务
  9. 测量 XW-HLR26-24G 微波雷达模块的性能测试
  10. Paddle中的数据集合定义与加载