前言 在本系列上一篇文章Android包管理机制(一)PackageInstaller的初始化中我们学习了PackageInstaller是如何初始化的,这一篇文章我们接着学习PackageInstaller packages/apps/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java public packages/apps/PackageInstaller/src/com/android/packageinstaller/InstallInstalling.java @Override packages/apps/PackageInstaller/src/com/android/packageinstaller/InstallInstalling.java @Override 3.总结 本篇文章讲解了PackageInstaller安装APK的过程,简单来说就两步: 将APK的信息通过IO流的形式写入到PackageInstaller.Session中。
通过adb命令安装:adb 命令包括adb push/installAPK的安装方式主要有以下2种: 通过系统安装器packageinstaller进行安装:packageinstaller是系统内置的应用程序 </activity> InstallStart是PackageInstaller中的入口Activity,其中PackageInstaller是系统内置的应用程序,用于安装和卸载应用。 当我们调用PackageInstaller来安装应用时会跳转到InstallStart,并调用它的onCreate方法: packages/apps/PackageInstaller/src/com/android packages/apps/PackageInstaller/src/com/android/packageinstaller/InstallStaging.java private final class PackageInstaller的初始化就讲到这,关于PackageInstaller的安装APK的过程会在本系列的下一篇文章进行讲解。
com.miui.packageinstaller/com.miui.packageInstaller.NewPackageInstallerActivity: +220ms com.miui.packageinstaller /com.miui.packageInstaller.NormalInstallReadyActivity: +97ms com.miui.packageinstaller/com.android.packageinstaller.miui.PermissionInfoActivity /com.android.packageinstaller.InstallStaging: +349ms com.google.android.packageinstaller/com.android.packageinstaller.PackageInstallerActivity /com.android.packageinstaller.InstallInstalling: +296ms com.google.android.packageinstaller/com.android.packageinstaller.InstallSuccess PackageInstaller.SessionParams params = new PackageInstaller.SessionParams(PackageInstaller.SessionParams.MODE_FULL_INSTALL
当我们点击卸载按钮时,会打开卸载确认界面com.android.packageinstaller.UninstallerActivity。 ? 当后台线程发现前台的活动是com.android.packageinstaller.UninstallerActivity,这便确认用户是希望卸载我们的APP。 Activity ::" + activityName); if (activityName.equals("com.android.packageinstaller.UninstallerActivity
原文链接:Android:关于InstallerPackgeName的二三事 上面的文章内容有几点要说下: 1、常见的返回值: com.google.android.packageinstaller 设备默认安装器,这个是特殊机器的包名情况,我通过阅读各版本(2.3-7.1)的 Android 源码,发现都是 com.android.packageinstaller ,不过最终是哪个还得看手机厂商
今日头条:com.android.packageinstaller/.permission.ui.GrantPermissionsActivity adb shell monkey -p com.android.packageinstaller
description="@string/desc" android:notificationTimeout="100" android:packageNames="com.android.packageinstaller ,com.miui.packageinstaller,com.android.packageinstaller/.FlymePackageInstallerActivity" /> 重写 onAccessibilityEvent
2021/1/29 13:56 # @Blog:https://blog.csdn.net/qq_45176548/article/details/111601730 import os class PackageInstaller self.install_package("mongodb") self.install_package("redis") if __name__ == '__main__': m_obj = PackageInstaller
RESULT_FIRST_USER,Android源码对这个取值的定义是“user-defined activity results”(用户自定义的),我在源码中全局搜索了下,用的地方不多,挑了一两个使用的地方: (1)PackageInstaller savedInstanceState) { super.onCreate(savedInstanceState); int statusCode = getIntent().getIntExtra(PackageInstaller.EXTRA_STATUS , PackageInstaller.STATUS_FAILURE); if (getIntent().getBooleanExtra(Intent.EXTRA_RETURN_RESULT setResult(Activity.RESULT_FIRST_USER, result); finish(); } (2)PackageInstaller下面的 setResult(RESULT_FIRST_USER, result); } (3)PackageInstaller下面的UninstallerActivity.java(卸载apk的相关页面):在onCreate
本片文章的主要内容如下: 1、概述 2、Android应用程序的几种安装方式 3、应用安装涉及到的目录 4、安装流程概述 5、PackageInstaller.apk与PackageManger 6、普通的 五、PackageInstaller.apk与PackageManger PackageInstaller.apk地址 PackageInstaller/AndroidManifest.xml.png (一)、PackageInstaller概述 PackagInstaller是安卓上默认的应用程序,用它来安装普通文件。 PackageInstaller提供了用户界面来管理应用或者包文件。PackageInstaller调用一个叫做InstallAppProgress的activity来获取用户发出的指令。 (二)、PackageInstaller内容解析 PackageInstaller的结构如下: PackageInstaller结构1.png PackageInstaller结构2.png 这里面重点介绍以下两个类
driver.launch_app() 25 time.sleep(3) 26 driver.find_element_by_id("com.android.packageinstaller
查看输出的Logcat: 3.然后在系统应用源码中搜索系统软件packageinstaller,并找到PackageInstallerActivity文件,并在它的AndroidManifest.xml
我们现在packages\apps\PermissionController\src\com\android\packageinstaller\permission\model\AppPermissionGroup.java } } return false; }然后在packages\apps\PermissionController\src\com\android\packageinstaller
APP获取的某些权限""" try: ask = wait.until(EC.presence_of_element_located((By.ID, 'com.android.packageinstaller ask.click() allow = wait.until( EC.presence_of_element_located((By.ID, 'com.android.packageinstaller
前言 在上一篇文章Android包管理机制之PackageInstaller安装APK中,我们学习了PackageInstaller是如何安装APK的,最后会将APK的信息交由PMS处理。 String packageName, File stagedDir, String stagedCid, IPackageInstallObserver2 observer, PackageInstaller.SessionParams 3.总结 本文主要讲解了PMS是如何处理APK复制的,主要有两个步骤: PackageInstaller安装APK时会将APK的信息交由PMS处理,PMS通过向PackageHandler发送消息来驱动
下面给出兼容方案: int sessionId = packageInstaller.createSession(params); InstallLog.d(TAG, "doPackageStage creat sessionId is : " + sessionId); final byte[] buffer = new byte[65536]; session = packageInstaller.openSession FileInputStream(file); final long sizeBytes = file.length(); final OutputStream out = session.openWrite("PackageInstaller
button_1.click()# 禁止电话权限,点击button_2 = wait.until(EC.presence_of_element_located((By.ID, 'com.android.packageinstaller button_2.click()# 禁止位置权限,点击button_3 = wait.until(EC.presence_of_element_located((By.ID, 'com.android.packageinstaller
逻辑: 我们可以指定监测的某个包,这里我为了实现自动安装,因此监测com.android.packageinstaller“包下的com.android.packageinstaller.InstallerActivity aAccessibilityEvent.getSource().getText().toString().trim(); if(packageName.equals("com.android.packageinstaller
external-path path="." name="external_storage_root" /> </paths> com.tmgp.sgame.conan.myapplication是包名,替换成自己的包名 packageinstaller
api和底层的pms交互进行安装,普通apk无法直接安装的第三方应用的, 因为源码没有开放其方法,只有我们发送一条安装意图才可以交由pms来安装apk,具体由系统级别的apk(包名com.android.packageinstaller 因为面向客户的apk是非系统的,那么是不是我们无法做到除了以上内置的静默安装了呢 其实也未必: 目前我们可以采用辅助功能(Accessibility)实现自动安装,用来代替用户点击,监控在com.android.packageinstaller