热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

获取android应用程序包名、图标、应用名称

有时候我们在开发程序时需要用到获取手机中已安装程序的包名、图标、应用名称,在这里写一篇简单的博客还是跟往常一样,先上图,最后会给出程序的Demo从上图可以看出,每个Item都包含了相应信息,所以在

有时候我们在开发程序时需要用到获取手机中已安装程序的包名、图标、应用名称,在这里写一篇简单的博客

还是跟往常一样,先上图,最后会给出程序的Demo


从上图可以看出,每个 Item 都包含了相应信息,所以在此为了封装信息,就写了一个 信息封装类

package com.cn.sz.fisi.appinfo.mode;

import android.graphics.drawable.Drawable;

public class AppInfo {

String appName;
String packageName;
Drawable drawable;

public AppInfo(){}

public AppInfo(String appName){
this.appName = appName;
}

public AppInfo(String appName, String packageName){
this.appName = appName;
this.packageName = packageName;
}

public AppInfo(String appName,String packageName, Drawable drawable){
this.appName = appName;
this.packageName = packageName;
this.drawable = drawable;
}



public String getAppName() {
if(null == appName)
return "";
else
return appName;
}

public void setAppName(String appName) {
this.appName = appName;
}

public String getPackageName() {
if(null == packageName)
return "";
else
return packageName;
}

public void setPackageName(String packageName) {
this.packageName = packageName;
}

public Drawable getDrawable() {
return drawable;
}

public void setDrawable(Drawable drawable) {
this.drawable = drawable;
}

}


Activity 代码 

package com.cn.sz.fisi.appinfo;

import java.util.ArrayList;
import java.util.List;

import com.cn.sz.fisi.appinfo.adapter.AppInfosAdapter;
import com.cn.sz.fisi.appinfo.mode.AppInfo;

import android.os.Bundle;
import android.app.Activity;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.view.Menu;
import android.widget.ListView;

public class MainActivity extends Activity {
ListView appInfoListView = null;
List appInfos = null;
AppInfosAdapter infosAdapter = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
appInfoListView = (ListView)this.findViewById(R.id.appinfo_list);
appInfos = getAppInfos();
updateUI(appInfos);
}

public void updateUI(List appInfos){
if(null != appInfos){
infosAdapter = new AppInfosAdapter(getApplication(), appInfos);
appInfoListView.setAdapter(infosAdapter);
}
}

// 获取包名信息
public List getAppInfos(){
PackageManager pm = getApplication().getPackageManager();
List packgeInfos = pm.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES);
appInfos = new ArrayList();
/* 获取应用程序的名称,不是包名,而是清单文件中的labelname
String str_name = packageInfo.applicationInfo.loadLabel(pm).toString();
appInfo.setAppName(str_name);
*/
for(PackageInfo packgeInfo : packgeInfos){
String appName = packgeInfo.applicationInfo.loadLabel(pm).toString();
String packageName = packgeInfo.packageName;
Drawable drawable = packgeInfo.applicationInfo.loadIcon(pm);
AppInfo appInfo = new AppInfo(appName, packageName,drawable);
appInfos.add(appInfo);
}
return appInfos;
}




@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}


下面是 adapter 的信息

package com.cn.sz.fisi.appinfo.adapter;

import java.util.List;

import com.cn.sz.fisi.appinfo.R;
import com.cn.sz.fisi.appinfo.mode.AppInfo;
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;

public class AppInfosAdapter extends BaseAdapter {

Context context;
List appInfos;

public AppInfosAdapter(){}

public AppInfosAdapter(Context context , List infos ){
this.cOntext= context;
this.appInfos = infos;
}

public Context getContext() {
return context;
}

public void setContext(Context context) {
this.cOntext= context;
}

public List getAppInfos() {
return appInfos;
}

public void setAppInfos(List appInfos) {
this.appInfos = appInfos;
}

@Override
public int getCount() {
// TODO Auto-generated method stub
int count = 0;
if(null != appInfos){
return appInfos.size();
};
return count;
}

@Override
public Object getItem(int index) {
// TODO Auto-generated method stub
return appInfos.get(index);
}

@Override
public long getItemId(int index) {
// TODO Auto-generated method stub
return index;
}

@Override
public View getView(int position, View convertView, ViewGroup arg2) {
// TODO Auto-generated method stub
ViewHolder viewHolder = null;
if(null == convertView){
viewHolder = new ViewHolder();
LayoutInflater mInflater = LayoutInflater.from(context);
cOnvertView= mInflater.inflate(R.layout.app_info_item, null);
viewHolder.appIcOnImg= (ImageView)convertView.findViewById(R.id.app_icon);
viewHolder.appNameText = (TextView)convertView.findViewById(R.id.app_info_name);
viewHolder.appPackageText = (TextView)convertView.findViewById(R.id.app_info_package_name);
convertView.setTag(viewHolder);
}else{
viewHolder = (ViewHolder)convertView.getTag();
}
if(null != appInfos){
viewHolder.appIconImg.setBackground(appInfos.get(position).getDrawable());
viewHolder.appNameText.setText(appInfos.get(position).getAppName());
viewHolder.appPackageText.setText(appInfos.get(position).getPackageName());
}

return convertView;
}

private class ViewHolder{
ImageView appIconImg;
TextView appNameText;
TextView appPackageText;
}

}


Activity 的 XML 代码  

    xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
tools:cOntext=".MainActivity" >

android:id="@+id/appinfo_text"
android:layout_
android:layout_
android:textSize="16sp"
android:text="@string/application_info"
android:gravity="center"
android:background="#888899"
android:paddingBottom="8dp"
android:paddingTop="8dp"
/>

android:id="@+id/appinfo_list"
android:layout_
android:layout_
android:layout_below="@id/appinfo_text"
android:divider="#666666"
android:divider
>





Item的 xml 代码

    xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
tools:cOntext=".MainActivity" >

android:id="@+id/appinfo_text"
android:layout_
android:layout_
android:textSize="16sp"
android:text="@string/application_info"
android:gravity="center"
android:background="#888899"
android:paddingBottom="8dp"
android:paddingTop="8dp"
/>

android:id="@+id/appinfo_list"
android:layout_
android:layout_
android:layout_below="@id/appinfo_text"
android:divider="#666666"
android:divider
>





项目 的 demo 地址

http://download.csdn.net/detail/qijian0503/9306333




推荐阅读
  • 自定义RecyclerView添加EmptyView
    你知道RecyclerView里没有Em ... [详细]
  • 我正在使用数组列表通过构建一个交互式菜单供用户选择来存储来自用户输入的值。到目前为止,我的两个选择是为用户提供向列表输入数据和读取列表的全部内容。到目前为止,我创建的代码由两个类组成。 ... [详细]
  • Xib九宫格应用管理使用xib封装一个自定义view的步骤1新建一个继承UIView的自定义view,假设类名叫做(AppView)2新建一个AppView.xib文件来描述 ... [详细]
  • 我们需要监听ScroView的滑动情况,比如滑动了多少距离,是否滑到布局的顶部或者底部。可惜的是SDK并没有相应的方法,不过倒是提供了一个protectedvoidonScrollChang ... [详细]
  • packagetest;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOE ... [详细]
  • 1.安装cordovapluginaddcordova-plugin-file-transfercordovapluginaddcordova-plugin-fi ... [详细]
  • 在Android源码环境下编译系统App使用第三方jar包的方法(备忘)
    1将要使用的jar包放入App的根目录,即Android.mk所在目录2按如下方式编写Android.mk文件(########之间的行用于编译和使用jar包)LOCAL_PATH:$(ca ... [详细]
  • 找出字符串中重复字符
    2019独角兽企业重金招聘Python工程师标准packagejavaBasic;importjava.util.HashMap;importjava.util.Map; ... [详细]
  • UILabel的混合显示动画效果
    UILabel的混合显示动画效果 ... [详细]
  • 在这一期的SendMessage函数应用中,我将向大家介绍如何利用消息函数来扩展树型列表(TreeView)控件的功能相信对于树型列表控件大家十分的熟悉, ... [详细]
  • 下载完成之后解压提取jl1.0.0.1.jar这里写图片描述将jl1.0.0.1.jar拷贝到项目中,并添加到Library这里写图片描述4.源代码Tip:由于工程名 ... [详细]
  • NSSROUND#8[Basic]
    文章目录一、[NSSRound#8Basic]MyDoor二、[NSSRound#8Basic]Upload_gogoggo三、[NSSRound#8Basic]MyPage四、[ ... [详细]
  • JNI技术实践小结转自http:sett ... [详细]
  • 最近自己做一个工具最后涉及到一个存储成bmp位图的形式,由于这部分并不是整个project的重点我就从网上找了例子改了改,但是目前的问题是有很多时候都是存储的bmp全黑,我也并不知道是怎么回事。 ... [详细]
  • 技术点:1、通过已知的网页路径获得流2、把流转换成字节数组3、把字节数组转换成String字符串显示在TextView控件中一、获得流publicstaticSt ... [详细]
author-avatar
kkq--_771
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有