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中,执行效果如下

  

Android AppUtil通用类的更多相关文章

  1. Android 意图通用类 IntentUrl

    1.整体分析 1.1.源代码如下,可以直接Copy. public class IntentUtil { /** * 打开链接 * 根据设置判断是用那种方式打开 * * @param context ...

  2. Android Config通用类来记录信息

    1.整体分析 1.1.源代码,可以直接Copy. public class Config { private static int M = 1024 * 1024; private volatile ...

  3. Android 网络通用类 NetUtil

    1.整体分析 1.1.源代码如下,可以直接Copy. public class NetUtil { /** * 用户是否连接网络 * * @param context Context */ publi ...

  4. Android 文件管理器通用类 FileUtil

    1.整体分析 1.1.源代码如下,可以直接Copy. public class FileUtil { private FileUtil() { } //****系统文件目录************** ...

  5. Android中View类OnClickListener和DialogInterface类OnClickListener冲突解决办法

    Android中View类OnClickListener和DialogInterface类OnClickListener冲突解决办法 如下面所示,同时导入这两个,会提示其中一个与另一个产生冲突. 1i ...

  6. poi导出excel通用类

    一.关键的通用类public class PoiExportUtils {    private static HSSFWorkbook workBook; public PoiExportUtils ...

  7. NPOI MVC 模型导出Excel通用类

    通用类: public enum DataTypeEnum { Int = , Float = , Double = , String = , DateTime = , Date = } public ...

  8. MVC NPOI Linq导出Excel通用类

    之前写了一个模型导出Excel通用类,但是在实际应用中,可能不是直接导出模型,而是通过Linq查询后获取到最终结果再导出 通用类: public enum DataTypeEnum { Int = , ...

  9. NPOI导入导出EXCEL通用类,供参考,可直接使用在WinForm项目中

    以下是NPOI导入导出EXCEL通用类,是在别人的代码上进行优化的,兼容xls与xlsx文件格式,供参考,可直接使用在WinForm项目中,由于XSSFWorkbook类型的Write方法限制,Wri ...

随机推荐

  1. XCode 如何真机运行别人的demo项目

    iOS应用安装到真机需要证书和mobileprovision 文件,拿到别人的项目 是没有这些的 ,也就运行不起来. 要想运行起来, 需要选中项目,  target - > 修改 bundlei ...

  2. OpenCart-2.3 (Ubuntu 16.04)

      平台: Ubuntu 类型: 虚拟机镜像 软件包: opencart-2.3 commercial ecommerce opencart open-source 服务优惠价: 按服务商许可协议 云 ...

  3. April 12 2017 Week 15 Wednesday

    Genius often betrays itself into great errors. 天才常被天才误. Genius can help us get greater achievements, ...

  4. IOS NSThread(线程同步)

    @interface HMViewController () /** 剩余票数 */ @property (nonatomic, assign) int leftTicketsCount; @prop ...

  5. 木棒,POJ(1011)

    题目链接:http://poj.org/problem?id=1011 解题报告: #include <cstdio> #include <cstring> #include ...

  6. Codeforces Round #347 (Div.2)_B. Rebus

    题目链接:http://codeforces.com/contest/664/problem/B B. Rebus time limit per test 1 second memory limit ...

  7. 在VS中使用Boost库出现Macro redefinition错误的解决方法(warning C4005)

    最近使用Boost库做多线程开发,可视在vs中编译工程师总是遇到Macro redefinition错误,类似下面的错误描述 1>c:\program files (x86)\microsoft ...

  8. ORB-SLAM使用方法

    preparation:按照官網步驟完成ORB的安裝. 1.修改Camera calibration參數:到~/ORB_SLAM/Data/Settings.yaml修改 2.開啟終端機    -&g ...

  9. CUDA Texture纹理存储器 示例程序

    原文链接 /* * Copyright 徐洪志(西北农林科技大学.信息工程学院). All rights reserved. * Data: 2012-4-20 */ // // 此程序是演示了1D和 ...

  10. element-UI时间控件:日期时间的选择范围的控制方法

    例:如一段已知的时间范围,为2018-10-01 - 2019-01-01 :当前为2018-07-09日,则今天以前的时间不能选择,以及2019-01-01以后的时间不能选:实现如下: <el ...