`
trinityblood
  • 浏览: 117008 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android 静默安装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.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.IPackageInstallObserver;
import android.content.pm.IPackageDeleteObserver;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;

public class InstallActivity extends Activity {
	/** Called when the activity is first created. */
	private Button btn1;
	private Button btn2;
	private final int INSTALL_COMPLETE = 1;
	private final int UNINSTALL_COMPLETE = 1;
	final static int SUCCEEDED = 1;
	final static int FAILED = 0;

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		btn1 = (Button) findViewById(R.id.btn1);
		btn2.setOnClickListener(listener1);
		btn2 = (Button) findViewById(R.id.btn2);
		btn2.setOnClickListener(listener2);
	}

	private OnClickListener listener1 = new OnClickListener() {
		public void onClick(View v) {
			String apkPath = Environment.getExternalStorageDirectory()
					+ "/baidu/" + "UC.apk";
			String packageName = "com.uc.browser";
			install(apkPath, packageName);
		}
	};
	private OnClickListener listener2 = new OnClickListener() {
		public void onClick(View v) {
			String packageName = "com.uc.browser";
			uninstall(packageName);
		}
	};

	// 安装
	public void install(String apkPath, String packageName) {
		Uri uri = Uri.fromFile(new File(apkPath));
		int installFlags = 0;
		PackageManager pm = getPackageManager();
		try {
			PackageInfo pi = pm.getPackageInfo(packageName,
					PackageManager.GET_UNINSTALLED_PACKAGES);
			if (pi != null) {
				installFlags |= PackageManager.INSTALL_REPLACE_EXISTING;
			}
		} catch (NameNotFoundException e) {
			Log.d("debug", "NameNotFoundException--" + e.getMessage());
		}
		PackageInstallObserver observer = new PackageInstallObserver();
		pm.installPackage(uri, observer, installFlags, packageName);
	}

	// 卸载
	public void uninstall(String packageName) {
		PackageManager pm = getPackageManager();
		PackageDeleteObserver observer = new PackageDeleteObserver();
		pm.deletePackage(packageName, observer, 0);
	}

	class PackageInstallObserver extends IPackageInstallObserver.Stub {
		public void packageInstalled(String packageName, int returnCode) {
			Message msg = mHandler.obtainMessage(INSTALL_COMPLETE);
			msg.arg1 = returnCode;
			mHandler.sendMessage(msg);
		}
	};

	class PackageDeleteObserver extends IPackageDeleteObserver.Stub {
		public void packageDeleted(boolean succeeded) {
			Message msg = mHandler.obtainMessage(UNINSTALL_COMPLETE);
			msg.arg1 = succeeded ? SUCCEEDED : FAILED;
			mHandler.sendMessage(msg);
		}
	}

	private Handler mHandler = new Handler() {
		public void handleMessage(Message msg) {
			switch (msg.what) {
			case INSTALL_COMPLETE:
				int centerTextLabel;
				Drawable centerTextDrawable = null;
				if (msg.arg1 == SUCCEEDED) {
				} else {
				}
				if (centerTextDrawable != null) {
				}
				break;
			default:
				break;
			}
		}
	};
}

此代码需要在sdk环境下编译(且本人用的System权限android:sharedUserId="android.uid.system")


源: http://hi.baidu.com/w22ee/item/f995a28bc6858b56e73d1978
分享到:
评论
1 楼 littleskull 2016-03-25  
作者你好,我正在做这个功能,发现一个问题,我现在使用android1.5的sdk,为什么会出现 installFlags |= PackageManager.INSTALL_REPLACE_EXISTING;和 pm.installPackage(uri, observer, installFlags, "com.uc.browser");这两句话编译不通过,底下划着红线,而且我发现这种方法里只有三个参数,你这写的是四个。所以我有这样的疑问,当时你是怎么做的处理?请指教,谢谢

相关推荐

    android静默安装程序

    在Android系统中,静默安装(Silent Installation)是指在用户无感知的情况下,通过编程方式自动安装应用程序。这种操作通常需要设备具有root权限,因为正常的Android安全机制限制了非系统应用的静默安装。Root权限...

    Android10静默安装APK

    在Android系统中,静默安装APK(Silent Install)是指在用户无感知的情况下自动安装应用程序。这通常需要系统的特殊权限,因为出于安全考虑,Android系统默认不允许非系统应用进行后台安装。在Android 10中,由于...

    android激活应用辅助功能,模拟点击静默安装apk

    在Android平台上,有时候我们可能需要在无需用户交互的情况下自动执行某些操作,比如静默安装APK文件。这就涉及到了Android的辅助功能(Accessibility Services)和模拟点击的技术。本篇文章将详细解析如何通过激活...

    Android静默安装卸载APK

    在Android系统中,静默安装和卸载APK是指在用户无感知的情况下,通过编程方式自动执行安装或卸载应用程序的过程。这种方式常用于系统维护、自动化测试或者在企业级设备管理中,以便批量处理应用程序的部署。在本教程...

    静默安装apk android4.4

    在Android系统中,静默安装(Silent Install)是指在用户无感知的情况下自动安装APK应用的过程。在Android 4.4(KitKat)版本中,这个功能主要应用于企业级设备管理和批量部署应用的场景。下面我们将详细探讨如何在...

    Android无需Root静默安装apk

    在本文中,我们将探讨如何在不获取Android设备Root权限的情况下实现静默安装APK。 静默安装APK的方法主要分为两种:通过Adb(Android Debug Bridge)和通过自定义服务。Adb是Android开发工具包中的一个重要组成部分...

    Android 无需root实现APK静默安装

    使用Android5.0的环境编译的,不同版本之间,aidl文件可能会有差异,具体还需参照Android...详细参考我的博客文章《Android 无需root实现APK静默安装》:http://blog.csdn.net/yyh352091626/article/details/50533137

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

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

    Android10.0 静默安装、卸载接口.zip

    在Android系统中,静默安装(Silent Installation)和卸载(Silent Uninstallation)是开发者或者系统管理员在后台执行应用程序的安装与卸载过程,无需用户交互的一种方式。这通常用于批量部署应用或者在设备管理器...

    android 5.1静默安装、卸载patch

    支持android5.1静默安装、卸载代码,封装在PackageInstaller模块内,在执行时可能需要修改部分framework代码使功能正常使用。

    android定时静默安装apk

    在Android系统中,静默安装APK是指在用户无感知的情况下自动进行的安装过程,通常需要设备具有root权限。静默安装APK适用于自动化部署、批量更新应用等场景。本教程将详细介绍如何实现Android定时静默安装APK,并在...

    APK自动静默安装并自动重新启动

    2. **广播接收器**:可以创建一个监听`ACTION_PACKAGE_INSTALLED`广播的接收器,当APK安装完成后,系统会发出这个广播,接收器接收到广播后执行相应的启动操作。 3. **使用Intent**:在APK的清单文件...

    Android应用源码APK实现静默安装整套资料.zip

    本资料"Android应用源码APK实现静默安装整套资料.zip"提供了一种实现静默安装的方法,包括源码参考和相关指导。下面我们将详细探讨如何在Android系统中实现APK的静默安装。 首先,我们需要了解在Android系统中安装...

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

    在Android系统中,静默安装(Silent Install)和静默卸载(Silent Uninstall)是指在不显示用户界面或获取用户明确许可的情况下自动安装或卸载应用程序。这对于批量设备管理和企业级应用部署尤其重要。在Android 7.0...

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

    标题与描述均提到了“Android实现静默安装APK的两种方法”,这表明文章将探讨在Android设备上不经过用户交互就能自动安装APK(应用包)文件的技术。这一功能对于自动化部署、企业级应用更新或系统级软件管理场景尤为...

    apk静默安装apk

    标题中的“apk静默安装apk”指的是在Android设备上,不显示安装界面和提示,而是通过特定的API或者命令行工具实现对其他APK文件的自动安装。这种方法常用于批量部署或者自动化测试场景,能够提高效率并减少用户的...

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

    android apk 的安装方式,看了这篇文档,希望对你有点帮助!

    静默安装apk

    在Android系统中,静默安装APK(Silent Installation)是指在用户无感知的情况下自动安装应用程序。这通常在企业级设备管理或者自动化测试环境中非常有用,因为它可以避免手动交互,提高部署效率。以下是对静默安装...

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

    在Android系统中,批量静默安装程序是一种自动化部署应用的方式,尤其在企业级环境中非常有用。这种方式能够避免在安装过程中出现用户交互界面,比如权限请求提示框,从而提高效率。以下是对这个主题的详细说明: 1...

Global site tag (gtag.js) - Google Analytics