2019独角兽企业重金招聘Python工程师标准>>>

今天写了一个获取手机程序相关信息的demo,以下是demo的运行结果。

这是项目的结构。

下面是项目的具体代码:

1.MainActivity

package com.example.adapterlearn.view;

import java.util.ArrayList;

import java.util.List;

import android.app.Activity;

import android.content.Context;

import android.content.pm.PackageInfo;

import android.content.pm.PackageManager;

import android.os.Bundle;

import android.view.Window;

import android.widget.ListView;

import com.example.adapterlearn.R;

import com.example.adapterlearn.model.MyPackageInfo;

import com.example.adapterlearn.view.controls.MyAdapter;

/**

* 显示手机应用程序包的相关信息

*

* @作者: 刘倩</br>

* @时间: 2014年4月23日 下午5:36:49</br>

* @描述: 主要显示应用程序包的相关信息</br>

*/

public class MainActivity extends Activity

{

/** 声明ListView */

private ListView listView;

/** 包的数据集合 */

private List<MyPackageInfo> piList;

/** 上下文 */

private Context context;

@Override

protected void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

// 设置为无标题状态

requestWindowFeature(Window.FEATURE_NO_TITLE);

initView();

}

/**

* 初始化视图

*/

private void initView()

{

context = this;

setContentView(R.layout.activity_main);

listView = (ListView) findViewById(R.id.acitvity_main_listview);

piList = getPhonePackageInfo();

listView.setAdapter(new MyAdapter(context, piList));

}

/**

* 得到包的详细信息

*

* @return 返回包的详细信息

*/

private List<MyPackageInfo> getPhonePackageInfo()

{

List<MyPackageInfo> myList = new ArrayList<MyPackageInfo>();

PackageManager packageManager = context.getPackageManager();

List<PackageInfo> appList = getAllPackageInfoFromThePhone();

for (int i = 0; i < appList.size(); i++)

{

PackageInfo pinfo = appList.get(i);

MyPackageInfo myPackageInfo = new MyPackageInfo();

// 设置icon

myPackageInfo.setPackageIcon(packageManager

.getApplicationIcon(pinfo.applicationInfo));

// 设置应用名称

myPackageInfo.setPackageLabel(packageManager.getApplicationLabel(

pinfo.applicationInfo).toString());

// 设置包名称

myPackageInfo.setPackageName(pinfo.applicationInfo.packageName);

myList.add(myPackageInfo);

}

return myList;

}

/**

* 得到所有的包信息

*

* @return 返回手机中包的信息

*/

@SuppressWarnings("static-access")

private List<PackageInfo> getAllPackageInfoFromThePhone()

{

List<PackageInfo> apkList = new ArrayList<PackageInfo>();

PackageManager packageManager = context.getPackageManager();

List<PackageInfo> list = packageManager.getInstalledPackages(0);

for (int i = 0; i < list.size(); i++)

{

PackageInfo pi = list.get(i);

if ((pi.applicationInfo.flags & pi.applicationInfo.FLAG_SYSTEM) <= 0)

{

apkList.add(pi);

}

}

return apkList;

}

}

2.MyAdapter

package com.example.adapterlearn.view.controls;

import java.util.List;

import android.annotation.SuppressLint;

import android.content.Context;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.ImageView;

import android.widget.TextView;

import com.example.adapterlearn.R;

import com.example.adapterlearn.model.MyPackageInfo;

/**

* 显示应用程序的适配器

*

* @作者: 刘倩</br>

* @时间: 2014年4月23日 下午5:34:34</br>

* @描述: 该适配器主要显示应用程序的icon,应用名和包名</br>

*/

public class MyAdapter extends BaseAdapter

{

/** 上下文 */

Context context;

/** 包信息 */

List<MyPackageInfo> piList;

/** 填充器 */

LayoutInflater mInflater;

public MyAdapter(Context context, List<MyPackageInfo> piList)

{

this.context = context;

this.piList = piList;

this.mInflater = LayoutInflater.from(context);

}

@Override

public int getCount()

{

return piList.size();

}

@Override

public Object getItem(int position)

{

return piList.get(position);

}

@Override

public long getItemId(int position)

{

return position;

}

@SuppressLint("NewApi")

@Override

public View getView(int position, View convertView, ViewGroup parent)

{

ViewHolder viewHolder;

if (convertView == null)

{

convertView = mInflater.inflate(R.layout.activity_main_adapter,

null);

viewHolder = new ViewHolder();

viewHolder.ivShowIcon = (ImageView) convertView

.findViewById(R.id.activity_main_adapter_iv_icon);

viewHolder.tvShowLabel = (TextView) convertView

.findViewById(R.id.activity_main_adapter_tv_label);

viewHolder.tvShowPackageName = (TextView) convertView

.findViewById(R.id.activity_main_adapter_tv_packagename);

convertView.setTag(viewHolder);

} else

{

viewHolder = (ViewHolder) convertView.getTag();

}

viewHolder.ivShowIcon.setBackground(piList.get(position)

.getPackageIcon());

viewHolder.tvShowLabel.setText(piList.get(position).getPackageLabel());

viewHolder.tvShowPackageName.setText(piList.get(position)

.getPackageName());

return convertView;

}

/**

* 存放控件的类

*

* @作者: 刘倩</br>

* @时间: 2014年4月23日 下午5:34:04</br>

* @描述: 此类用于存放控件,缓存用</br>

*/

class ViewHolder

{

public ImageView ivShowIcon;

public TextView tvShowLabel;

public TextView tvShowPackageName;

}

}

3.MyPackageInfo

package com.example.adapterlearn.model;

import android.graphics.drawable.Drawable;

/**

* 自定义的程序包的信息类

*

* @作者: 刘倩</br>

* @时间: 2014年4月23日 下午5:35:43</br>

* @描述: 这里只定义了程序包的icon,应用名称和包名</br>

*/

public class MyPackageInfo

{

/** 应用程序的包名 */

private String packageName = "";

/** 应用程序的icon */

private Drawable packageIcon;

/** 应用程序的标签 */

private String packageLabel = "";

public String getPackageName()

{

return packageName;

}

public void setPackageName(String packageName)

{

this.packageName = packageName;

}

public Drawable getPackageIcon()

{

return packageIcon;

}

public void setPackageIcon(Drawable drawable)

{

this.packageIcon = drawable;

}

public String getPackageLabel()

{

return packageLabel;

}

public void setPackageLabel(String packageLabel)

{

this.packageLabel = packageLabel;

}

}

4.activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

tools:context=".MainActivity" >

<ListView

android:id="@+id/acitvity_main_listview"

android:layout_width="wrap_content"

android:layout_height="wrap_content" />

</RelativeLayout>

5.activity_main_adapter.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="horizontal" >

<ImageView

android:id="@+id/activity_main_adapter_iv_icon"

android:layout_width="50dip"

android:layout_height="50dip"

android:layout_marginBottom="5dip"

android:layout_marginTop="5dip"

android:contentDescription="@null" />

<LinearLayout

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginBottom="5dip"

android:layout_marginLeft="10dip"

android:layout_marginTop="5dip"

android:orientation="vertical" >

<TextView

android:id="@+id/activity_main_adapter_tv_label"

android:layout_width="wrap_content"

android:layout_height="wrap_content" />

<TextView

android:id="@+id/activity_main_adapter_tv_packagename"

android:layout_width="wrap_content"

android:layout_height="wrap_content" />

</LinearLayout>

</LinearLayout>

以上是全部代码,如果想下载源码,请进入:http://download.csdn.net/detail/u010820846/7240785下载

转载于:https://my.oschina.net/u/1244156/blog/225600

Android获取手机应用程序包的信息相关推荐

  1. android获取手机sim卡信息,Android获取手机SIM卡运营商信息的方法

    本文实例讲述了Android获取手机SIM卡运营商信息的方法,对于Android程序设计有非常实用的价值.分享给大家供大家参考之用.具体方法如下: 主要功能代码如下: /** * 获取SIM卡运营商 ...

  2. App获取android分辨率,Android 获取手机及APP信息实例详解

    霜风渐紧寒侵被,听孤雁声嘹唳,一声声送一声悲.<御街行>中的这句诗用来形容这个季节的北京真是再合适不过了,霜风阵阵,跑步的时候也越来越舍不得脱去外套了,考验毅力的时刻到了! 言归正传,开发 ...

  3. android 通过手机号码查询联系人,android获取手机通讯录联系人

    android获取手机通讯录联系人信息 private void getPhoneContacts() { ContentResolver resolver = this.getContentReso ...

  4. android获取手机通讯录联系人

    android获取手机通讯录联系人信息 private void getPhoneContacts() { ContentResolver resolver = this.getContentReso ...

  5. android sim卡联系人存储格式,Android获取手机通讯录、sim卡联系人及调用拨号界面方法...

    android获取手机通讯录联系人信息 private void getPhoneContacts() { ContentResolver resolver = this.getContentReso ...

  6. android 获取已安装 错误代码,android获取手机已经安装的app信息

    Android获取手机已安装APP(系统/非系统) 效果图 主体代码 private ListView mlistview; private ListpackageInfoList; private ...

  7. Android开发之获取手机SIM卡信息

    TelephonyManager是一个管理手机通话状态.电话网络信息的服务类,该类提供了大量的getXxx(),方法获取电话网络的相关信息. TelephonyManager类概述: 可用于访问有关设 ...

  8. android获取手机和系统版本等信息的代码,Android获取手机的版本号等信息的代码...

    本文实例分享了Android获取手机系统版本等信息的方法,供大家参考,具体内容如下: 第一种代码: String phoneInfo = "Product: " + android ...

  9. android 6.0获取手机imei,android获取手机信息大全,android获取大全,IMEI号,IESI号,...

    android获取手机信息大全,android获取大全,IMEI号,IESI号, IMEI号,IESI号,手机型号: [java] view plaincopyprint?private void g ...

最新文章

  1. EBS查询当前LOV SQL
  2. app后台开发笔记-新手
  3. c语言填空三个数找中间大小,2013计算机等级考试二级C语言填空题.doc
  4. 基于Asp.Net Core Mvc和EntityFramework Core 的实战入门教程系列-2
  5. 猿题库 iOS 客户端架构设计-唐巧
  6. 微软过冬的三大姿势:裁员,回购400亿美元股票,在中国开合资公司
  7. putty, puttycm区别
  8. 【Nginx】通过反向代理配置本地图床功能
  9. 网易java默认路径_java对象存储位置
  10. Oracle学习总结(8)—— 面向程序员的数据库访问性能优化法则
  11. 如何建立内核级钩子控制操作系统实现程序隐身
  12. 社区发现(五)--BP(信念传播算法)
  13. C#工程添加了DLL编译运行时却提示”无法加载DLL“的解决方案
  14. 凑热闹买了个小米剃须刀
  15. iapp退出软件按钮代码_一师一优课视频专用转码软件的安装和使用教程
  16. 产品数据管理(PDM)技术说明书
  17. linux给红米note4x刷机,小米红米Note 4X线刷刷机教程_Note4X第三方rom系统刷机包
  18. mac终端提示You have not agreed to the Xcode license agreements.
  19. ​Cocos Creator入门实战:桌球小游戏
  20. 64位的jre和32位的jre

热门文章

  1. C#学习笔记(八)——定义类的成员
  2. 3.5 面向连接的运输:TCP
  3. ASP.NET WebAPi之断点续传下载(中)
  4. activiti自己定义流程之Spring整合activiti-modeler实例(七):任务列表展示
  5. NumPy Essentials 带注释源码 三、NumPy 数组使用
  6. hihocoder 1490 Tree Restoration
  7. 如何为网站项目添加子项目
  8. 程序员修炼之道阅读笔记01
  9. [洛谷3812]【模板】线性基
  10. 用大数据分析顾客会掏钱买你哪件商品