39.获得手机上安装的所有应用程序信息

要获得手机上安装的应用程序的信息,需要用包管理器:PackageManager.

获得所有已经安装在手机上的应用程序包信息

List<PackageInfo> packInfos = pm.getInstalledPackages(int flags);

其中,参数flags: Additional option flags,是可选的,以后遇到这样的flags,我们直接赋为0.

for (PackageInfo packInfo : packInfos){

这里的每个packInfo都相当于一个应用程序apk包的清单文件,而一个程序的安装信息都在清单文件中。

包名、版本号、版本名都在manifest根节点下,可以直接获得,如获得程序包名

String packname = packInfo.packageName;


而应用程序的图标、应用程序名等信息都是在清单文件的application节点下需要先拿到application节点,然后再获得相应的信息,如获得应用程序的图标及应用程序名

Drawable icon = packInfo.applicationInfo.loadIcon(pm);

String name = packInfo.applicationInfo.loadLabel(pm).toString();


判断应用程序是否为系统应用程序时,需要先得到该应用程序的标记,然后跟系统应用的标记做与操作,如果不为0,则为系统应用程序:

int flags = packInfo.applicationInfo.flags;

if((flags & ApplicationInfo.FLAG_SYSTEM) == 0){

该应用程序为用户安装程序

}else{

该程序为系统应用程序

}


判断应用程序是否安装在SD卡上,也需要用应用程序的标记跟外部存储的标记做与操作,如果不为0,则应用程序就安装在SD卡上

if((flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) == 0){

该应用程序安装在手机内存上

}else{

该应用程序安装在SD卡上

}

}


设置应用程序的优先安装位置为外部存储设备

在清单文件中的manifest节点属性中,增加android:installLocation="preferExternal"代码即可。默认情况是装在手机内存上。


40.复杂ListView的显示

如:显示程序列表的ListView,由于程序分为用户程序和系统程序,所以可以在所有用户程序显示之前添加一个TextView来显示用户程序的个数,在系统程序之前也添加一个TextView用来显示系统程序的个数,而显示程序的布局跟这个Textview是不同的。此时的ListView的长度比之前要+2.如下图:


所以在复用convertView时,不仅要判断是否为空,还要判断这个convertView是否是合适的类型去复用。如:if(converView != null && convertViewinstanceof RelativeLayout)


如果想让ListView滑动时,Textview的位置不动,其实现方法是将ListView放到帧布局中,并且在ListView后面再定义一个Textview(帧布局的显示效果是:靠后定义的位于靠前定义的上面,这样就可以实现Textview不会滑动的效果),然后给ListView添加一个滚动监听器,在onScroll方法中,判断参数firstVisibleItem是否大于用户程序数,如果大于则设置Textview为系统程序,else为用户程序。


ListView右边快速滚动的实现,增加属性:

android:fastScrollEnabled="true"

更多相关文章

  1. Android程序老是报错
  2. 王家林最受欢迎的一站式云计算大数据和移动互联网解决方案课程 V
  3. 当在调试模式下启动时,Android应用程序崩溃。
  4. 关于AndroidStudio中提示cannot resolve symble R,但程序可以正常
  5. 北京一年工作经验的java web开发程序员税前5K是不是要高了?
  6. 黑马程序员_Java基础_我的Day09学习笔记
  7. 《JavaScript 高级程序设计》学习总结六(1)
  8. 在网页程序或Java程序中调用接口实现短信猫收发短信的解决方案
  9. ubuntu (16.04) server 英文原版 添加中文语言支持 消除java 程

随机推荐

  1. Android SDK Manager无法更新的解决
  2. Android事件分发机制详解
  3. vlc android 代码编译
  4. 配置eclipse的android开发环境
  5. Android error:No CPU/ABI system image
  6. 用两张图告诉你,为什么你的 App 会卡顿?关
  7. Android驱动例子(LED灯控制)
  8. Eclipse+CDT+GDB调试android NDK程序 轉
  9. Android 在xml布局配置文件中给Button按
  10. 系出名门Android(8)