package com.example.administrator.ximengjianyu.utils; import android.content.Context; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.net.Uri; import java.util.ArrayList; import java.util.List; /** * Created by xukai on 2017/2/16. */ public class ApkUtils { private Context mContext; public ApkUtils(Context context) { mContext = context; } /** * 该方法用来卸载程序 */ public void uninstallAPK(String packageName) { // 通过程序的包名创建URI Uri packageURI = Uri.parse("package:" + packageName); // 创建Intent意图 Intent intent = new Intent(Intent.ACTION_DELETE); intent.setData(packageURI); // 执行卸载程序 mContext.startActivity(intent); } /** * 该方法用来判断某个手机上是否安卓了指定的软件 */ public boolean haveInstallApk( String packageName){ //获取packagemanager final PackageManager packageManager = mContext.getPackageManager(); //获取所有已安装程序的包信息 List packageInfos = packageManager.getInstalledPackages(0); //用于存储所有已安装程序的包名 List packageNames = new ArrayList(); //从pinfo中将包名字逐一取出,压入pName list中 if(packageInfos != null){ for(int i = 0; i < packageInfos.size(); i++){ String packName = packageInfos.get(i).packageName; packageNames.add(packName); } } //判断packageNames中是否有目标程序的包名,有TRUE,没有FALSE return packageNames.contains(packageName); } /** * 判断相对应的APP是否存在 * * @param context * @param packageName(包名)(若想判断QQ,则改为com.tencent.mobileqq,若想判断微信,则改为com.tencent.mm) * @return */ public static boolean isAvilible(Context context, String packageName) { PackageManager packageManager = context.getPackageManager(); //获取手机系统的所有APP包名,然后进行一一比较 List pinfo = packageManager.getInstalledPackages(0); for (int i = 0; i < pinfo.size(); i++) { if (((PackageInfo) pinfo.get(i)).packageName .equalsIgnoreCase(packageName)) return true; } return false; } }