代码:
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
分享到:
相关推荐
android实在获得root权限应用静默安装
通过AIDL调用Android源码静默安装卸载APK....
android激活应用辅助功能,模拟点击静默安装apk,免root安装apk
Android的静默安装似乎是一个很有趣很诱人的东西,但是,用普通做法,如果手机没有root权限的话,似乎很难实现静默安装,因为Android并不提供显示的Intent调用,一般是通过以下方式安装apk: Intent intent = new ...
android静默安装apk,多种方式,非常好用。已经用于自己的项目。
在android4.4 平台,给预安装apk进行静默安装升级待命示例
使用Android5.0的环境编译的,不同版本之间,aidl文件可能会有差异,具体还需参照Android...详细参考我的博客文章《Android 无需root实现APK静默安装》:http://blog.csdn.net/yyh352091626/article/details/50533137
Android10.0 静默安装、卸载接口
Android无需Root静默安装apk,无需获取root,下载文件包括Android工程slientInstall和Java打包工程Zip
Android静默安装apk的Demo。引入了TrineaAndroidCommon。手机需要root。
Android实现静默安装APK的两种方法.doc
android静默安装和智能安装的实现(本人测试的5.0的系统)
实现android定时安装静默apk,自动在后台安装,安装完成后自动启动,需要root权限
android apk 的安装方式,看了这篇文档,希望对你有点帮助!
利用系统签名实现APK自动静默安装并自动重新启动
APK静默安装是指实现了在APK文件安装过程中不会出现系统安装对话框。不仅可以安装新的apk,也适用于更新旧的apk。更新apk必须保证新旧apk签名一致。本次分享的源码就是一套关于apk静默安装的源码,可以实现apk的静默...
支持android5.1静默安装、卸载代码,封装在PackageInstaller模块内,在执行时可能需要修改部分framework代码使功能正常使用。
依然全网唯一。手把手教你如何免root静默安装apk,是免root哦。包含源码、说明文档及特制系统签名打包工具,利用Android源码层AIDL实现偷梁换柱,静默安装apk