android 静默暗转_Android 7.0 静默安装
<=Api 23 时 相信大家都是通过installPackage这个类反射来静默安装apk的。但是呢api24及其之后就没有这个方法了,你再PackageManagerService或IPackageManager都是没有这个方法了。所以我们只能通过installPacakageAsUser来实现静默安装了。代码如下:
/**
* void installPackageAsUser(in String originPath,
* in IPackageInstallObserver2 observer,
* int flags,
* in String installerPackageName,
* int userId);
* @param installPath
*/
private void installApkInSilence(String installPath,String packageName) {
Class> pmService;
Class> activityTherad;
Method method;
try {
activityTherad = Class.forName("android.app.ActivityThread");
Class> paramTypes[] = getParamTypes(activityTherad, "getPackageManager");
method = activityTherad.getMethod("getPackageManager", paramTypes);
Object PackageManagerService = method.invoke(activityTherad);
pmService = PackageManagerService.getClass();
Class> paramTypes1[] = getParamTypes(pmService, "installPackageAsUser");
method = pmService.getMethod("installPackageAsUser", paramTypes1);
method.invoke(PackageManagerService, installPath, null, 0x00000040, packageName, getUserId(Binder.getCallingUid()));//getUserId
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
private Class>[] getParamTypes(Class> cls, String mName) {
Class> cs[] = null;
Method[] mtd = cls.getMethods();
for (int i = 0; i < mtd.length; i++) {
if (!mtd[i].getName().equals(mName)) {
continue;
}
cs = mtd[i].getParameterTypes();
}
return cs;
}
public static final int PER_USER_RANGE = 100000;
public static int getUserId(int uid) {
return uid / PER_USER_RANGE;
}
android 静默暗转_Android 7.0 静默安装相关推荐
- android 静默暗转_Android静默安装
想要做到静默安装,其实就是要有权限执行pm install命令.准备工作其实就两步: 1.获取执行权限 2.执行命令 我们首先介绍第二步,如何执行pm install命令: 关键代码其实就一句: Ru ...
- android 动态获取全县_android 6.0之后动态获取权限
1. 概述 Android 6.0 (API 23) 之前应用的权限在安装时全部授予,运行时应用不再需要询问用户.在 Android 6.0 或更高版本对权限进行了分类,对某些涉及到用户隐私的权限可在 ...
- android ota不打包_android 6.0系统 make otapackage 错误
android 6.0 系统:在make otapackage时,出现如下错误: unable to load device-specific module; assuming none using ...
- android 实现磨砂效果_Android 5.0 下毛玻璃(磨砂)效果如何实现?
刚刚做技术调研,可以给一些优缺点的对比. 目前主流实现毛玻璃效果(高斯模糊)分大致三种方法: 一 利用RenderScript接口 利用现有Android结构,通过RenderScript调用底层接口 ...
- android7.0 静默安装
android7.0 静默安装,可以用来更新已经安装的应用.无法获取安装进度,可以使用系统广播来监听应用的安装.卸载.更新.7.1.2版本亲测可行.不过使用了系统签名再次签名! /** * 静默安装 ...
- 解决编译失败 Attribute meta-data#android.support.VERSION@value value=(26.0
报错如下: Attribute meta-data#android.support.VERSION@value value=(26.0.0) from [com.android.support:des ...
- android功能导航布局,安卓9.0新功能 屏幕旋转将与导航栏同窗
中关村在线消息:今天早些时候谷歌向开发者们推送了Android P(也称安卓9.0)的首个开发者预览版,在原先8.0的基础上进一步改进了通知栏,也为刘海屏幕专门进行了优化.意味着未来"刘海& ...
- 用Android访问本地站点---(localhost,10.0.2.2)要区别
2019独角兽企业重金招聘Python工程师标准>>> 输入http://localhost:8080/kankong/index.html,可是这将不会成功,为什么呢?问题是这样的 ...
- android mysql开发工具_Android开发工具--adb的使用
adb(Android Debug Bridge)是Android提供的一个通用的调试工具,借助这个工具,我们可以管理设备或手机模拟器的状态.还可以进行以下的操作: 1.快速更新设备或手机模拟器中的代 ...
- Android之导入项目提示Android requires compiler compliance level 5.0 or 6.0. Found ‘1.8‘ instead解决办法
1.问题 导入项目eclipse提示如下: Android requires compiler compliance level 5.0 or 6.0. Found '1.8' instead 2.解 ...
最新文章
- 三,ES6中需要注意的特性(重要)
- 【Java】面试高频考题---topK问题详解(堆heap求解)
- R语言构建文本分类模型并使用LIME进行模型解释实战:文本数据预处理、构建词袋模型、构建xgboost文本分类模型、基于文本训练数据以及模型构建LIME解释器解释多个测试语料的预测结果并可视化
- 转:多线程环境下调用 HttpWebRequest 并发连接限制
- Tensorflow模型的保存与恢复的细节
- base64核心原理
- AUTOSAR从入门到精通100讲(六十)-Explanation of Firmware Over-The-Air
- 网络工程师晋升_晋升为工程师的最快方法
- Nginx+Tomcat+Memcached集群 【测试成功】
- Z-BlogPHP主题/名扬图文博客主题模板商业版
- 2019交通顶级期刊_2019年顶级11面试准备书
- 机器学习模型可解释性进行到底——特征重要性(四)
- 面试题-JQuery里Ajax的原理是怎样的?
- Kmp算法(java)
- 硬盘分区-增加C盘容量教程
- 4、杂项:Hyper-v/远程桌面使用USB设备(串口、加密狗等)
- ffmpeg音频滤镜
- ticklength
- mysql中的锁(表锁,行锁)
- 图像解析——(java)识别车牌步骤——更新中