概述
1.普通的应用安装和卸载
/* 安装apk */
public static void installApk(Context context, String fileName) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setDataAndType(Uri.parse("file://" + fileName),"application/vnd.android.package-archive");
context.startActivity(intent);
}
/* 卸载apk */
public static void uninstallApk(Context context, String packageName) {
Uri uri = Uri.parse("package:" + packageName);
Intent intent = new Intent(Intent.ACTION_DELETE, uri);
context.startActivity(intent);
}
当应用安装或卸载成功后,系统会发送相应的广播
监听系统发出的安装广播
在安装和卸载完后,android系统会发一个广播
android.intent.action.PACKAGE_ADDED(安装)
android.intent.action.PACKAGE_REMOVED(卸载)
我们可以监听这两个广播,来进行相应的处理
public class MonitorSysReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent){
//接收安装广播
if (intent.getAction().equals("android.intent.action.PACKAGE_ADDED")) {
//TODO
}
//接收卸载广播
if (intent.getAction().equals("android.intent.action.PACKAGE_REMOVED")) {
//TODO
}
}
}
在AndroidMainFest.xml中,我们需要注册该广播
<receiver android:name=".MonitorSysReceiver">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_ADDED" />
<action android:name="android.intent.action.PACKAGE_REMOVED" />
</intent-filter>
</receiver>
2.Android的静默安装和卸载
Android的静默安装和卸载,需要将应用注册成系统用户组,并且需要在系统源码下编译才行。
android:sharedUserId="android.uid.system"
还需要相应的权限
<uses-permission android:name="android.permission.INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.DELETE_PACKAGES" />
报红的话,clean一下就行了
静默安装
安装方法:
String fileName = Environment.getExternalStorageDirectory() + File.separator + "baidu"+File.separator +"UC.apk";
Uri uri = Uri.fromFile(new File(fileName));
int installFlags = 0;
PackageManager pm = getPackageManager();
try {
PackageInfo pi = pm.getPackageInfo("com.UCMobile",PackageManager.GET_UNINSTALLED_PACKAGES);
if(pi != null) {
installFlags |= PackageManager.INSTALL_REPLACE_EXISTING;
}
} catch (Exception e) {
Log.e("exception",e.toString());
}
MyPakcageInstallObserver observer = new MyPakcageInstallObserver();
pm.installPackage(uri, observer, installFlags, "com.UCMobile");
安装回调
/*静默安装回调*/
class MyPakcageInstallObserver extends IPackageInstallObserver.Stub{
@Override
public void packageInstalled(String packageName, int returnCode) {
if (returnCode == 1) {
Log.e("DEMO","安装成功");
new ToastThread(InstallActivity.this,"安装成功").start();
}else{
Log.e("DEMO","安装失败,返回码是:"+returnCode);
new ToastThread(InstallActivity.this,"安装失败,返回码是:"+returnCode).start();
}
}
}
静默卸载:
PackageManager pm = ParentManagementSettings.this.getPackageManager();
IPackageDeleteObserver observer = new MyPackageDeleteObserver();
pm.deletePackage("com.readboy.microclassphone", observer, 0);
/**
* 应用静默删除回调
* @author 1
*
*/
class MyPackageDeleteObserver extends IPackageDeleteObserver.Stub {
@Override
public void packageDeleted(String packageName, int returnCode) {
if (returnCode == 1) {
Log.e("DEMO","success...");
}else{
Log.e("DEMO","fail code:"+returnCode);
}
}
}
备注:
根据APK的path路径,查看APK的包名
PackageManager pm2=getActivity().getPackageManager();
PackageInfo info=pm2.getPackageArchiveInfo(files[i].getPath(), 0);
Log.e("DEMO", "infoName"+info.packageName);
packageNameString=info.packageName;
最后
以上就是哭泣项链为你收集整理的Android 应用的安装和卸载的全部内容,希望文章能够帮你解决Android 应用的安装和卸载所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复