Android 无法监听安装,Android关于apk安装成功广播监听
有这样的应用场景,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安装成功广播监听相关推荐
- android apk安装工具,APK安装器下载-APK安装器手机版下载v2.9-1 安卓版-西西软件下载...
APK安装器取代手机当中自带的APK安装器,让安装的界面在整体上面变得更加的好看,对于颜值有着极高要求的用户而言,虽然安装界面我们不一定能够经常的进行看到,但是界面的丑美也非常影响感官体验,感兴趣的话 ...
- android应用是非正式版本,Androidstudio 打包apk安装失败 应用是非正式发布版本,当前设备不支持安装...
Androidstudio 打包apk安装失败 应用是非正式发布版本,当前设备不支持安装 环境:Androidstudio 4.0 华为手机版本 10.0 android { compileSdkV ...
- 2022年大厂Android高级面试题分享,安卓Apk安装过程
现在的IT行业竞争压力越来越大,尤其是Android开发行业.而很多Android程序员却每天都在重复CRUD,原地徘徊! 今年年初,你就想改变现状,于是在网上刷了大量面试题,强行记下之后,开始参加面 ...
- java apk安装路径_android apk安装过程源码解析
前言: 前一篇博客分析了一下PackageManagerService是如何解析apk的以及我们如何解析未安装apk中的androidManifest.xml文件.解析完肯定要安装的,索性写一篇关于a ...
- android安装apk时提示安装包异常导致安装失败,常见apk安装失败的错误及原因
INSTALL_FAILED_NO_MATCHING_ABIS:主要是cpu架构不同导致需要的类库不同 INSTALL_FAILED_NO_MATCHING_ABIS is when you are ...
- android 安装应用程序apk安装不了
今天用测试机的时候遇到这个问题 解决办法: 在设置里面找到应用程序管理安全设置,,[允许未知来源程序安装] -------------大致以上思路,具体按钮名称我就不重新去找了------------ ...
- 从源码角度解析Android中APK安装过程
从源码角度解析Android中APK的安装过程 1. Android中APK简介 Android应用Apk的安装有如下四种方式: 1.1 系统应用安装 没有安装界面,在开机时自动完成 1.2 网络下载 ...
- android 安装器,APK安装器
详情 APK安装器是一款最新推出的功能非常强大的安卓软件安装器.APK安装器颠覆了以往的安卓手机常规的安装方式和规则.操作非常简单,功能十分多样化,而且不会显示在你的手机桌面上占用你的手机桌面影响美观 ...
- Android 10.0 PackageManagerService(三)APK扫描-[Android取经之路]
摘要:上一节讲解了PKMS的 权限扫描,扫描/system/etc/permissions中的xml,存入相应的结构体中,供之后权限管理使用. 这一节主要来讲讲APK的扫描. 阅读本文大约需要花费15 ...
最新文章
- 美团智能问答技术探索与实践
- ibase4j nginx配置
- mysql数据库一些可能会用到的命令
- iPad的无纸化办公和纯纸化办公的区别和使用场景
- openstack安装rabbitmq-server消息队列时出现错误
- Rust最受喜爱却少有人用,Python仅排第六,2021全球开发者调查报告出炉
- 五子棋项目结束总结_居家活动系列总结
- 三.激光SLAM框架学习之A-LOAM框架---项目工程代码介绍---1.项目文件介绍(除主要源码部分)
- python 调试代码_菜鸟世界 -借助ipython 调试代码
- 人工智能将为维护网络安全带来更多可能
- DTCMS自定义标签,获取所有栏目文章列表TOP,以及文章通用URL
- 常用wed扫描工具 awvs|appscan|Netsparker|Nessus
- Java项目开发管理工具-Maven基础
- NIO消息边界问题处理
- WebStorm中使用Git同步代码到Github
- Windows上软件的未来:什么是MSIX文件?
- 18V降压3.3V的降压IC和LDO芯片方案,15V降压3.3V的降压IC和LDO芯片方案
- 酷开与鸿蒙哪个好用,上手说说创维电视与酷开有区别没有?哪个好?老司机透漏评测...
- 计算机的信息表示(进制的转换)
- 深入理解ArrayList中 toArray(),toArray(T[])方法