Android获取手机应用程序包的信息
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获取手机应用程序包的信息相关推荐
- android获取手机sim卡信息,Android获取手机SIM卡运营商信息的方法
本文实例讲述了Android获取手机SIM卡运营商信息的方法,对于Android程序设计有非常实用的价值.分享给大家供大家参考之用.具体方法如下: 主要功能代码如下: /** * 获取SIM卡运营商 ...
- App获取android分辨率,Android 获取手机及APP信息实例详解
霜风渐紧寒侵被,听孤雁声嘹唳,一声声送一声悲.<御街行>中的这句诗用来形容这个季节的北京真是再合适不过了,霜风阵阵,跑步的时候也越来越舍不得脱去外套了,考验毅力的时刻到了! 言归正传,开发 ...
- android 通过手机号码查询联系人,android获取手机通讯录联系人
android获取手机通讯录联系人信息 private void getPhoneContacts() { ContentResolver resolver = this.getContentReso ...
- android获取手机通讯录联系人
android获取手机通讯录联系人信息 private void getPhoneContacts() { ContentResolver resolver = this.getContentReso ...
- android sim卡联系人存储格式,Android获取手机通讯录、sim卡联系人及调用拨号界面方法...
android获取手机通讯录联系人信息 private void getPhoneContacts() { ContentResolver resolver = this.getContentReso ...
- android 获取已安装 错误代码,android获取手机已经安装的app信息
Android获取手机已安装APP(系统/非系统) 效果图 主体代码 private ListView mlistview; private ListpackageInfoList; private ...
- Android开发之获取手机SIM卡信息
TelephonyManager是一个管理手机通话状态.电话网络信息的服务类,该类提供了大量的getXxx(),方法获取电话网络的相关信息. TelephonyManager类概述: 可用于访问有关设 ...
- android获取手机和系统版本等信息的代码,Android获取手机的版本号等信息的代码...
本文实例分享了Android获取手机系统版本等信息的方法,供大家参考,具体内容如下: 第一种代码: String phoneInfo = "Product: " + android ...
- android 6.0获取手机imei,android获取手机信息大全,android获取大全,IMEI号,IESI号,...
android获取手机信息大全,android获取大全,IMEI号,IESI号, IMEI号,IESI号,手机型号: [java] view plaincopyprint?private void g ...
最新文章
- EBS查询当前LOV SQL
- app后台开发笔记-新手
- c语言填空三个数找中间大小,2013计算机等级考试二级C语言填空题.doc
- 基于Asp.Net Core Mvc和EntityFramework Core 的实战入门教程系列-2
- 猿题库 iOS 客户端架构设计-唐巧
- 微软过冬的三大姿势:裁员,回购400亿美元股票,在中国开合资公司
- putty, puttycm区别
- 【Nginx】通过反向代理配置本地图床功能
- 网易java默认路径_java对象存储位置
- Oracle学习总结(8)—— 面向程序员的数据库访问性能优化法则
- 如何建立内核级钩子控制操作系统实现程序隐身
- 社区发现(五)--BP(信念传播算法)
- C#工程添加了DLL编译运行时却提示”无法加载DLL“的解决方案
- 凑热闹买了个小米剃须刀
- iapp退出软件按钮代码_一师一优课视频专用转码软件的安装和使用教程
- 产品数据管理(PDM)技术说明书
- linux给红米note4x刷机,小米红米Note 4X线刷刷机教程_Note4X第三方rom系统刷机包
- mac终端提示You have not agreed to the Xcode license agreements.
- ​Cocos Creator入门实战:桌球小游戏
- 64位的jre和32位的jre