Android实现静默安装

一般情况下,Android系统安装apk会出现一个安装界面,用户可以点击确定或者取消来进行apk的安装。

但在实际的项目需求中,有一种需求,就是希望apk在后台安装(不出现安装界面的提示),这种安装方式称为静默安装。

Android实现静默安装的方式有很多,这里只介绍一种比较简单易理解的方法,就是调用Android未公开的API(installPackage)来实现。

下面通过一种简单的Demo来简单实现静默安装,界面如下:

当点击"静默安装"的按钮时,会在后台安装360手机卫士的apk,安装成功后,会弹出Toast提示安装成功。

首先需要再AndroidManifest.xml声明下面的权限:

<uses-permission android:name="android.permission.INSTALL_PACKAGES" />

然后主要实现的代码如下:

从上面可以看出,事先需要再SD卡上放一个需要静默安装的apk(没有检测这个apk是否存在,只是简单实现)

上面的方法中涉及到了PackageInstallObserver类,实现代码如下:

代码部分已经基本实现完成,但是在eclipse里面,这个Demo是编译不过的,因为installPackage这个API没有公开,在上层是调用不到的,所以,需要在Android源码的环境下编译,在Demo根目录下新建Android.mk文件,内容如下:

Android.mk的写法有固定的格式和写法,如果不会写,可以参考Android源码中个系统应用mk文件的写法。

下面简单介绍下mk几个选项的含义:

下面的头和尾的写法都是固定的:

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

......

LOCAL_SRC_FILES := $(call all-subdir-java-files)

......

include $(BUILD_PACKAGE)

LOCAL_MODULE_TAGS :=user eng tests optional

user: 指该模块只在user版本下才编译

eng: 指该模块只在eng版本下才编译

tests: 指该模块只在tests版本下才编译

optional:指该模块在所有版本下都编译

LOCAL_PACKAGE_NAME   需要编译项目的名称

如果你的APK依赖第三方jar包,还可以通过下面的选项来定义

LOCAL_STATIC_JAVA_LIBRARIES := xsocket jackson-mapper logging jackson-core javatar log4j

Android.mk的洗发和规范有很多,具体可以在网上查查资料。

准备就绪后,就可以在Android源码环境下通过mmm编译这个Demo了,当然源码的编译环境需要自己配置。

时间: 2024-10-13 02:13:43

Android实现静默安装的相关文章

Android 中静默安装

静默安装原理: 1.需要获取root的操作权限 2.通过命令式的方式直接进行安装APK.在使用 Android Studio debug安装的时候可以看到控制台上的命令 那么就直接上代码吧: /**<p>项目名:singno</p>  * <p>包名: com.singno</p>  * <p>文件名:VersionManager.java</p>  * <p>版本信息: 2.1.0</p>  * <p&

android 实现静默安装、卸载(图)

android中应用的安装卸载,大家(用android设备的)肯定不陌生.这里就来浅谈android应用的安装.卸载的实现方式. 1.系统安装程序 android自带了一个安装程序---/system/app/PackageInstaller.apk.大多数情况下,我们手机上安装应用都是通过这个apk来安装的.代码使用也非常简单: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 /* 安装apk */ public static void installApk(

android 实现静默安装、卸载

方法1:[使用调用接口方法,由于安装卸载应用程序的部分API是隐藏的,所以必须下载Android系统源码,在源码下开发并编译之后使用MM命令编译生成APK文件] import java.io.File; import android.app.Activity; import android.os.Bundle; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.

android实现静默安装demo

1.须要RootTools.jar 2.运行脚本 public class InstallerActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main)

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

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

Android 静默安装和智能安装的实现方法

1 简介 最近研究了Android的静默安装和智能安装,于是写博客记录一下. 静默安装就是无声无息的在后台安装apk,没有任何界面提示. 智能安装就是有安装界面,但全部是自动的,不需要用户去点击. 首先强调两点: 静默安装必须要root权限 智能安装必须要用户手动开启无障碍服务 2 原理 静默安装.卸载的原理就是利用pm install命令来安装apk,pm uninstall 来卸载apk. 智能安装是利用android系统提供的无障碍服务AccessibilityService,来模拟用户点

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实现静默安装其实很简单,今天在网上找资料找半天都说的很复杂,什么需要系统安装权限.调用系统隐藏的api.需要系统环境下编译.需要跟systemUI同进程什么的.我不知道他们真的实现了静默安装没有,反正我按照他们的方式统统都失败了. 下面我来说说我的静默安装实现方式,亲测效果跟豌豆荚一样,并且实现起来非常简单: 1.支持静默安装的机器必须Root,这个不需要我多讲了. 2.使用pm指令安装即可.     3.特别注意 PM指令不支持中文,也就说路径中有中文会导致安装失败! 关键代码如

Android 静默安装Apk

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