`
bogongjie
  • 浏览: 230475 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Android常用代码之普通及系统权限静默安装APK

阅读更多

1、普通模式安装,调用系统Intent,代码如下:

public void install(Context context, String filePath) {
		Intent intent = new Intent(Intent.ACTION_VIEW);
		intent.setDataAndType(Uri.parse("file://" + filePath),
				"application/vnd.android.package-archive");
		intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
		context.startActivity(intent);
	}

 2、静默安装

(1)、静默安装需要系统应用安装权限,需要在AndroidManifest.xml中添加:

    a.)安装权限:

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

    b.) 系统权限:

android:sharedUserId="android.uid.system"

 (2)、实现代码
静默安装代码如下,实际是通过pm install -r 命令安装。
注意:该函数最好在新建的线程中运行并通过handler发送安装结果给主线程,否则安装时间较长会导致ANR。

public String install(String apkAbsolutePath){
		String[] args = { "pm", "install", "-r", apkAbsolutePath };
		String result = "";
		ProcessBuilder processBuilder = new ProcessBuilder(args);
		Process process = null;
		InputStream errIs = null;
		InputStream inIs = null;
		try {
			ByteArrayOutputStream baos = new ByteArrayOutputStream();
			int read = -1;
			process = processBuilder.start();
			errIs = process.getErrorStream();
			while ((read = errIs.read()) != -1) {
				baos.write(read);
			}
			baos.write("\n".getBytes());
			inIs = process.getInputStream();
			while ((read = inIs.read()) != -1) {
				baos.write(read);
			}
			byte[] data = baos.toByteArray();
			result = new String(data);
		} catch (IOException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (errIs != null) {
					errIs.close();
				}
				if (inIs != null) {
					inIs.close();
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
			if (process != null) {
				process.destroy();
			}
		}
		return result;
	}

 3,使用系统sign key进行签名后安装,或者push到/system/app/下面。

分享到:
评论

相关推荐

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

    Android的静默安装似乎是一个很有趣很诱人的东西,但是,用普通做法,如果手机没有root权限的话,似乎很难实现静默安装,因为Android并不提供显示的Intent调用,一般是通过以下方式安装apk: Intent intent = new ...

    android静默安装程序

    android实在获得root权限应用静默安装

    android定时静默安装apk

    实现android定时安装静默apk,自动在后台安装,安装完成后自动启动,需要root权限

    android 7.0非root下 实现静默安装 多种方式

    android 7.0 非root下 具有system权限下 实现静默安装 静默卸载 的多种实现方式

    Android批量静默安装程序,无权限提示框

    批量安装apk程序,安装过程不弹提示框,需要将apk程序放到/system/app目录下

    Android10静默安装APK

    Android10静默安装APK,卸载APP,需要系统权限,编译到priv-app下, 参考文章:http://t.csdn.cn/UrQQZ 部分API或者引用没有的可以去掉,不影响使用

    Android 实现静默安装并自动重启(需要root)

    通过系统root权限实现android系统的静默安装以及安装成功后自动重启

    Android应用安装APK方法汇总源码

    1、正常安装——有安装界面,由系统自带的packageinstaller.apk应用处理安装及卸载过程的界面。 2、系统权限下静默安装——无安装界面,其实也是Google Play的安装方式,当然也是有实现方法的。 3、ROOT下完全静默...

    静默安装Apk

    android 实现静默安装小例子 需获得root权限

    android 静默安装文件

    android 系统 app 后台安装,无任何界面提示,也不需要给用户任何提示。安装成功后,桌面上会显示app应用图表

    Android静默安装Demo

    Android静默安装apk的Demo。引入了TrineaAndroidCommon。手机需要root。

    Android实现静默安装的两种方法

    1、root权限静默安装实现 实现实际使用的是su pm install -r filePath命令。 核心代码如下: protected static void excuteSuCMD&#40;&#41; { Process process = null; OutputStream out = null; I

    Android静默安装常用工具类

    关于静默安装可见apk-root权限静默安装。 4、PackageUtils Android包相关工具类,可用于(root)安装应用、(root)卸载应用、判断是否系统应用等,如: install(Context, String) 安装应用,如果是系统应用或已经root...

    android apk各种安装卸载方式

    支持安装方式  1.启动系统安装界面正常安装安装。...静默安装到/system/app中,需要root权限。   卸载方式  1.利用系统卸载界面PackageUninstalActivity来卸载。  2.卸载安装到/system/app/下的内置应用。

    Android实现静默安装实例代码

    静默安装主要分为以下几种方式: 一、在ROOT过的机器上,在App中使用pm install指令安装APK: // 申请su权限 Process process = Runtime.getRuntime().exec&#40;su&#41;; dataOutputStream = new ...

    Android中软件的静默安装

    实现apk更新和静默安装,获取root进行静默安装比较简单: 1,申请root权限Runtime.getRuntime().exec&#40;"su"&#41;; 2,通过数据输出流DataOutputStream写入pm install命令; 3,最后获取Process进程的返回值int i =...

    android 实现自我自动静默卸载

    android 实现自我自动静默卸载 妈妈再也不用担心我是流氓了 部分手机安装失败。本人三星i9108可以 小米安装失败。不知道为什么。同个程序。可能是小米没root,但是代码里面没有涉及root相关的 。只是修改了应用权限 ...

    android开发apk进行系统签名工具

    本工具可以对debug的apk文件进行系统签名,实现一些系统级app的功能,例如:app静默升级,修改系统时间,时区等功能

Global site tag (gtag.js) - Google Analytics