我是靠谱客的博主 哭泣项链,最近开发中收集的这篇文章主要介绍Android 应用的安装和卸载,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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 应用的安装和卸载所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部