如何实现APK的静默安装

Android上的静默安装是个很诱人的功能,但是Android系统的安全策略要求任何应用在安装时应该提示APK安装包的权限,仅仅只对于一些内置特定厂商应用,可以跳过安装过程的信息加快安装,或者运营商强制安装。如果安装一个普通的APK也想实现静默安装,那么应该怎么办呢?

Android系统主控应用程序安装的是PackageManager,我们平时在安卓手机上看到的安装界面是系统自带的PackageInstaller.apk为我们提供的。这里实现静默安装的思路是通过修改这个APK中显示安装界面的部分来达成实现静默安装的目的。这个过程如下:

(1)首先找到PackageInstaller.apk的源码,位于packages/apps/PackageInstaller中。如下:

这里需要修改AndroidManifest.xml文件:

把<application android:label="@string/app_name"

android:theme="@android :style/Theme.Holo.DialogWhenLarge">

改成 <application android:label="@string/app_name" >

把PackageInstallActivity <activity的主题改为:

android:theme="@android :style/Theme.NoDisplay"表示没有窗口。

其它的<activity>……</activity>可根据需要进行调整。

(2)接着进packages/apps/PackageInstaller/src/com/android/packageinstaller

在PackageInstallActivity.java这个Activity中,首先检查所欲安装的程序是否是正确的安装文件,以及当前系统中是否已安装了此应用程序,提示用户是否重复安装,另外还获取所欲安装的程序所用到的权限,然后将这些信息通过一个对话框提示给用户。当用户确定安装时,启动InstallAppProgress.java这个Activity,在这个Activity中,调用android.content.pm.PackageManager.installPackage(Uri packageURI, IPackageInstallObserver observer, int flags, String installerPackageName)进行安装应用程序。

这里需要修改PackageInstallActivity.java,去掉下面的dialog和对话框界面即可。

安装权限确认窗口:installPermissionConfirm

安装进度条:installProgress

安装结果窗口:installResult

安装错误提示对话框

(3)修改完之后进行保存,必须随系统源码重新编译一次。

时间: 2024-10-12 13:08:35

如何实现APK的静默安装的相关文章

Android 无需root实现apk的静默安装

转载请注明出处:http://blog.csdn.net/yyh352091626/article/details/50533137 Android的静默安装似乎是一个很有趣很诱人的东西,但是,用普通做法,如果手机没有root权限的话,似乎很难实现静默安装,因为Android并不提供显示的Intent调用,一般是通过以下方式安装apk: Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFi

Android随笔之——静默安装、卸载

随笔之所以叫随笔,就是太随意了,说起来,之前的闹钟系列随笔还没写完,争取在十月结束之前找时间把它给写了吧.今天要讲的Android APK的静默安装.卸载.网上关于静默卸载的教程有很多,更有说要调用隐藏API,在源码下用MM命令编译生成APK的,反正我能力有限,没一一研究过,这里选择一种我试验成功的来讲. 静默安装.卸载的好处就是你可以偷偷摸摸,干点坏事什么的,哈哈~ 一.准备工作 要实现静默安装.卸载,首先你要有root权限,能把你的静默安装.卸载程序移动到system/app目录下. 1.用

apk 静默安装

老大要我弄个自动更新,要用到静默安装,网上找到了些大拿的代码,我拿去改吧改吧,先贴出来: Java代码   /** * 软件静默安装 * @param apkAbsolutePath apk文件所在路径 * @return 安装结果:获取到的result值<br> * * 如果安装成功的话是“ * pkg: /data/local/tmp/Calculator.apk  /nSuccess”,<br> * 如果是失败的话,则没有结尾的“Success”. */ public Str

Android下实现静默安装指定APK

什么是静默安装?既是可以在不提示用户的情况下,进行APK的安装. 有的时候,根据业务需求,需要实现静默安装APK,但是Android提供的安装接口是需要提示用户的前提下安装. 以下提供一个静默安装的解决方案(通过执行命令行的方式实现,需ROOT权限): new Thread() { public void run() { Process process = null; OutputStream out = null; InputStream in = null; try { // 请求root

Android apk的安装、卸载、更新升级(通过Eclipse实现静默安装)

一.通过Intent消息机制发送消息,调用系统应用进行,实现apk的安装/卸载 . (1) 调用系统的安装应用,让系统自动进行apk的安装 String fileName = "/data/data/com.zlc.ipanel.operate/FileOperate.apk";  Uri uri = Uri.fromFile(new File(fileName));  Intent intent = new Intent(Intent.ACTION_VIEW);  intent.se

静默安装apk的方法--Android是否可以实现静默安装模式

只对于能看懂能编译安卓源码的兄弟们: pakcagemanagerservice.java中三个installpackage打头的函数 最后一个函数第一行代码就是检查这个PERMISSION,去掉就可以了. 但是您不能直接去掉原来的函数里面的代码,您可以自行添加一个API,函数和installpackage里面的一样,差别就是少了检查PERMISSION这行 下面这个文章有点老了 (1)在网上搜寻该问题的解决方法,且查阅android开发文档,没有发现可以实现该功能的显示API调用,网络上很多人

APP流氓大法之apk 静默安装

老大要我弄个自动更新,要用到静默安装,网上找到了些大拿的代码,我拿去改吧改吧,先贴出来: Java代码   /** * 软件静默安装 * @param apkAbsolutePath apk文件所在路径 * @return 安装结果:获取到的result值<br> * * 如果安装成功的话是“ * pkg: /data/local/tmp/Calculator.apk  /nSuccess”,<br> * 如果是失败的话,则没有结尾的“Success”. */ public Str

Android 静默安装Apk

参考链接 android 静默安装 [Android]实现静默安装APK的两种方法

Android项目实战(三十一):异步下载apk文件并安装(非静默安装)

原文:Android项目实战(三十一):异步下载apk文件并安装(非静默安装) 前言: 实现异步下载apk文件 并 安装.(进度条对话框显示下载进度的展现方式) 涉及技术点: 1.ProgressDialog   进度条对话框  用于显示下载进度 2.AsyncTask         异步任务的使用    耗时操作不能再主线程中进行      安卓开发_浅谈AsyncTask 3.File                   文件相关操作    将文件的字节数据生成文件 4.自动打开安装应用操