1.整体分析

1.1.先看一下源码,可以直接Copy。

  1. public class AppUtil {
  2.  
  3. /**
  4. * 获取当前程序包名
  5. *
  6. * @param context 上下文
  7. * @return 程序包名
  8. */
  9. public static String getPackageName(Context context) {
  10. return context.getPackageName();
  11. }
  12.  
  13. /**
  14. * 获取程序版本信息
  15. *
  16. * @param context 上下文
  17. * @return 版本名称
  18. */
  19. public static String getVersionName(Context context) {
  20. String versionName = null;
  21. String pkName = context.getPackageName();
  22. try {
  23. versionName = context.getPackageManager().getPackageInfo(pkName, 0).versionName;
  24. } catch (PackageManager.NameNotFoundException e) {
  25. Log.e("VersionInfo", "Exception", e);
  26. }
  27. return versionName;
  28. }
  29.  
  30. /**
  31. * 获取程序版本号
  32. *
  33. * @param context 上下文
  34. * @return 版本号
  35. */
  36. public static int getVersionCode(Context context) {
  37. int versionCode = -1;
  38. String pkName = context.getPackageName();
  39. try {
  40. versionCode = context.getPackageManager().getPackageInfo(pkName, 0).versionCode;
  41. } catch (PackageManager.NameNotFoundException e) {
  42. Log.e("VersionInfo", "Exception", e);
  43. }
  44. return versionCode;
  45. }
  46.  
  47. /**
  48. * 判断是否安装某个应用
  49. *
  50. * @param context 上下文
  51. * @param packageName 包名
  52. * @return 是否安装
  53. */
  54. public static boolean isAvailable(Context context, String packageName) {
  55. final PackageManager packageManager = context.getPackageManager();//获取packagemanager
  56. List<PackageInfo> pInfo = packageManager.getInstalledPackages(0);//获取所有已安装程序的包信息
  57. //从pinfo中将包名字逐一取出,压入pName list中
  58. if (pInfo != null) {
  59. for (int i = 0; i < pInfo.size(); i++) {
  60. String pn = pInfo.get(i).packageName;
  61. if (pn.equals(packageName))
  62. return true;
  63. }
  64. }
  65. return false;
  66. }
  67. }

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. ArcMap如何修改地图坐标系统

    有时候,地图投影坐标需要作出修改,使得符合要求,不然空间参考不一样无法进行进一步的操作,分析等!下面介绍arcgis地图投影坐标的修改! 1.首先,将地图数据导入,这里我导入的是广西的边界图bound ...

  2. Linux CentOS下部署Java Web项目

    本文讲解如何在Linux CentOS下部署Java Web项目的步骤. 一.环境准备: (1)Linux CentOS (2)apache-tomcat-9.0.10 (3)XShell 二.启动t ...

  3. helm深入学习

    Helm把Kubernetes资源(比如deployments.services或 ingress等) 打包到一个chart中,而chart被保存到chart仓库.通过chart仓库可用来存储和分享c ...

  4. 数据结构与算法分析java——线性表2(ArrarList )

    ArrayList ArrayList 是一个数组队列,相当于 动态数组.与Java中的数组相比,它的容量能动态增长.它继承于AbstractList,实现了List, RandomAccess, C ...

  5. Hybris开发环境的license计算实现

    每隔30天,必须重新执行一次initialize命令把本地所有数据全部清掉然后重新build,需要花费一些时间. 显示在console里的license信息通过license.jsp展示: 剩余的li ...

  6. python图形库(1)

    python有很好图形库cv2(包含很多图形处理的算法),pylab(绘图工具模块) 这两个“模块”是肯定要配置的. 安装这两个模块可用了我不少时间. pylab它不是一个包,而是 numpy, sc ...

  7. 【[TJOI2018]碱基序列】

    题目 为什么没人用\(SAM\)啊 我们先把原来的模式串建一遍\(SAM\),之后我们就可以求出\(SAM\)上每一个节点的\(|endpos|\)就可以知道每一个子串出现的次数了,也就是在模式串上的 ...

  8. eclips新建Maven Web项目

    一.创建项目 1.Eclipse中用Maven创建项目 上图中Next 2.继续Next 3.选maven-archetype-webapp后,next 4.填写相应的信息,Packaged是默认创建 ...

  9. fast rcnn的实例

    http://www.cnblogs.com/louyihang-loves-baiyan/p/4906690.html https://saicoco.github.io/object-detect ...

  10. ASP.NET中刷新分页

    1,第一次全部把数据加载到内存中,然后再做分页,性能差,不推荐. 2,GridView自带分页 3,AspNetPager分页控件  这个是第三分控件需要下载,很好用 4,自己写分页 前三种就不介绍如 ...