1.整体分析
1.1.先看一下源码,可以直接Copy。
public class AppUtil { /** * 获取当前程序包名 * * @param context 上下文 * @return 程序包名 */ public static String getPackageName(Context context) { return context.getPackageName(); } /** * 获取程序版本信息 * * @param context 上下文 * @return 版本名称 */ public static String getVersionName(Context context) { String versionName = null; String pkName = context.getPackageName(); try { versionName = context.getPackageManager().getPackageInfo(pkName, 0).versionName; } catch (PackageManager.NameNotFoundException e) { Log.e("VersionInfo", "Exception", e); } return versionName; } /** * 获取程序版本号 * * @param context 上下文 * @return 版本号 */ public static int getVersionCode(Context context) { int versionCode = -1; String pkName = context.getPackageName(); try { versionCode = context.getPackageManager().getPackageInfo(pkName, 0).versionCode; } catch (PackageManager.NameNotFoundException e) { Log.e("VersionInfo", "Exception", e); } return versionCode; } /** * 判断是否安装某个应用 * * @param context 上下文 * @param packageName 包名 * @return 是否安装 */ public static boolean isAvailable(Context context, String packageName) { final PackageManager packageManager = context.getPackageManager();//获取packagemanager List<PackageInfo> pInfo = packageManager.getInstalledPackages(0);//获取所有已安装程序的包信息 //从pinfo中将包名字逐一取出,压入pName list中 if (pInfo != null) { for (int i = 0; i < pInfo.size(); i++) { String pn = pInfo.get(i).packageName; if (pn.equals(packageName)) return true; } } return false; } }
1.2.主要方法
- 获取APP包名
- 获取APP版本信息
- 获取APP版本号
- 判断是否安装某个应用
2.局部分析
2.1.如何获取APP包名
传入一个上下文,直接可以获取包名。
2.2.如何获取APP版本信息
传入一个上下文,直接可以获取版本名称。
2.3.如何获取APP版本号
2.4.判断是否安装某个应用
这里需要知道那个应用的包名,和上下文
不过通常常用应用的包名都是公开的,比如支付宝微信QQ什么的,就不用担心这个packageName。
3.应用实例
3.1.我调用了这四个函数到一个APP中,执行效果如下