管理一些手机中的Apk或者其他应用程序:

一、自己封装的类ApkManager,关于Apk的操作,很少,日后再行补充。

(1) 获取当前程序版本   

public static String getVersionName(Context context) {

PackageManager packageManager = null;

PackageInfo packInfo = null;

try {

packageManager = context.getPackageManager();

// getPackageName()获取当前程序包名, 0代表获取版本号

packInfo = packageManager.getPackageInfo(context.getPackageName(),

0);

return packInfo.versionName;

} catch (NameNotFoundException e) {

e.printStackTrace();

}

return null;

}

(2) 获取当前程序版本号   

public static int getVersionCode(Context context) {

PackageManager packageManager = null;

PackageInfo packInfo = null;

try {

packageManager = context.getPackageManager();

// getPackageName()获取当前程序包名, 0代表获取版本号

packInfo = packageManager.getPackageInfo(context.getPackageName(),

0);

return packInfo.versionCode;

} catch (NameNotFoundException e) {

e.printStackTrace();

}

return 0;

}

(3)安装Apk     

public static void installApk(Context context, File apk) {

Intent in = new Intent();

in.setAction(Intent.ACTION_VIEW);

in.setDataAndType(Uri.fromFile(apk),

"application/vnd.android.package-archive");

context.startActivity(in);

}


二、封装类InstallManager,关于安装包的一些操作。

(1)获取本地安装所有的非系统应用   

public static List<AppInfoBean> getAllInstalledPackages(Context context) {

List<AppInfoBean> app_list = new ArrayList<AppInfoBean>();

// 获取所有的安装包

PackageManager pManager = context.getPackageManager();

List<PackageInfo> packages = pManager.getInstalledPackages(0);



for (PackageInfo pInfo : packages) {

byte[] appIcon = BitmapManager.getBytesFromDrawable(pInfo.applicationInfo.loadIcon(pManager));

AppInfoBean aib = new AppInfoBean(pInfo.applicationInfo.loadLabel(

pManager).toString(), pInfo.packageName, pInfo.versionName,

pInfo.versionCode, appIcon);



if ((pInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) > 0) {

// 这是系统应用程序

} else {

app_list.add(aib);

}

}

return app_list;

}

(2)根据包名判断App是否安装       

public static boolean isAppInstalled(Context context, String packageName) {

PackageInfo packageInfo;

try {

packageInfo = context.getPackageManager().getPackageInfo(

packageName, 0);

if (packageInfo != null) {

return true;

}

} catch (NameNotFoundException e) {

packageInfo = null;

Toast.makeText(context, "没有找到该应用,请检查是否正确安装", Toast.LENGTH_LONG)

.show();

e.printStackTrace();

}

return false;

}

(3)启动App     

public static void startInstalledApp(Context context, String packageName) {

if (packageName == null || packageName.equals("")) {

Toast.makeText(context, "无效应用", Toast.LENGTH_LONG).show();

return;

}

// 检测是否安装,若成功安装,那么启动该App

if (isAppInstalled(context, packageName)) {

try {

Intent in = context.getPackageManager()

.getLaunchIntentForPackage(packageName);

context.startActivity(in);

} catch (Exception e) {

Toast.makeText(context, "启动失败", Toast.LENGTH_LONG).show();

e.printStackTrace();

}

}

}

(4)获取App应用名       

public static String getAppName(Context context, String packageName){

PackageManager pManager = null;

ApplicationInfo mAppInfo = null;

try {

pManager = context.getPackageManager();

mAppInfo = pManager.getApplicationInfo(packageName, 0);

} catch (NameNotFoundException e) {

e.printStackTrace();

return null;

}

return mAppInfo.loadLabel(pManager).toString();

}

(5)卸载App       

public static void uninstallApp(Context context, String packageName) {

if (packageName == null || packageName.equals("")) {

Toast.makeText(context, "无效的应用程序", Toast.LENGTH_LONG).show();

return;

}

String appName = getAppName(context, packageName);

if(appName == null || appName.equals("")){

Toast.makeText(context, "您要卸载的程序不存在", Toast.LENGTH_LONG).show();

return;

}

Uri packageUri = Uri.parse("package:" + packageName+appName);

Intent in = new Intent(Intent.ACTION_DELETE, packageUri);

context.startActivity(in);

}

部分APP操作代码。