1)创建AppInfo类,代码如下

package com.example.installedapp;import android.graphics.drawable.Drawable;public class AppInfo {/*应用程序名称*/private String appName="";public void SetAppName(String _appName){this.appName=_appName;}public String GetAppName(){return this.appName;}/*包名称*/private String packageName="";public void SetPackageName(String _packageName){this.packageName=_packageName;}public String GetPackageName(){return this.packageName;}/*版本名称*/private String versionName="";public void SetVersionName(String _versionName){this.versionName=_versionName;}public String GetVersionName(){return this.versionName;}/*版本编号*/private int versionCode=0;public void SetVersionCode(int _versionCode){this.versionCode=_versionCode;}public int GetVersionCode(){return this.versionCode;}/*图标*/private Drawable appIcon=null;public void SetAppIcon(Drawable _appIcon){this.appIcon=_appIcon;}public Drawable GetAppIcon(){return this.appIcon;}}

2)创建applist.xml作为自定义ListView的样式代码如下

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent" >    <ImageView        android:id="@+id/appIcon"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:src="@drawable/ic_launcher" />    <LinearLayout        android:layout_width="wrap_content"        android:layout_height="match_parent"        android:orientation="vertical" >        <LinearLayout            android:layout_width="match_parent"            android:layout_height="wrap_content">            <TextView                android:id="@+id/appName"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_marginLeft="20dp"                android:layout_marginTop="5dp"                android:text="TextView" />            <TextView                android:id="@+id/packageName"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_marginLeft="20dp"                android:layout_marginTop="5dp"                android:text="TextView" />        </LinearLayout>        <LinearLayout            android:layout_width="match_parent"            android:layout_height="wrap_content" >            <TextView                android:id="@+id/versionCode"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_marginLeft="20dp"                android:layout_marginTop="5dp"                android:text="TextView" />            <TextView                android:id="@+id/versionName"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_marginLeft="20dp"                android:layout_marginTop="5dp"                android:text="TextView" />        </LinearLayout>    </LinearLayout></LinearLayout>

3)创建MyListAdapter.java作为自定ListAdapeter代码如下

package com.example.installedapp;import java.util.ArrayList;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;class MyListAdapter extends BaseAdapter {private ArrayList<AppInfo> apps=null;private Context context=null;public MyListAdapter(ArrayList<AppInfo> _apps,Context _context){this.apps=_apps;this.context=_context;}      public int getCount() {          //设置绘制数量          return apps.size();      }        @Override      public boolean areAllItemsEnabled() {         return false;      }        public Object getItem(int position) {          return position;      }        public long getItemId(int position) {          return position;      }        public View getView(int position, View convertView, ViewGroup parent) {          ImageView appIconImageView=null;        TextView appNameTextView=null;        TextView packageNameTextView=null;        TextView versionCodeTextView=null;        TextView versionNameTextView=null;        if (convertView == null || position < apps.size()) {          convertView = LayoutInflater.from(context).inflate(              R.layout.applist, null);          appIconImageView = (ImageView) convertView.findViewById(R.id.appIcon);          appNameTextView = (TextView) convertView.findViewById(R.id.appName);          packageNameTextView = (TextView) convertView.findViewById(R.id.packageName);          versionCodeTextView = (TextView) convertView.findViewById(R.id.versionCode);          versionNameTextView = (TextView) convertView.findViewById(R.id.versionName);         }        /*图标*/        appIconImageView.setImageDrawable(apps.get(position).GetAppIcon());        /*应用程序名称*/        appNameTextView.setText(apps.get(position).GetAppName());        /*包名称*/        packageNameTextView.setText(apps.get(position).GetPackageName());        /*版本编号*/        versionCodeTextView.setText(Integer.toString(apps.get(position).GetVersionCode()));        /*版本名称*/        versionNameTextView.setText(apps.get(position).GetVersionName());        return convertView;      }  }  

4)修改MainActivity.java代码将自定ListAdapeter绑定给ListView代码如下

package com.example.installedapp;import java.util.ArrayList;import java.util.List;import android.os.Bundle;import android.app.Activity;import android.content.pm.ApplicationInfo;import android.content.pm.PackageInfo;import android.view.Menu;import android.widget.ListView;public class MainActivity extends Activity {private ListView listView1=null;private MyListAdapter adapter=null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);listView1=(ListView)findViewById(R.id.listView1);ArrayList<AppInfo> items=GetApps();adapter=new MyListAdapter(items, MainActivity.this);listView1.setAdapter(adapter);}/*获取非系统应用信息*/private ArrayList<AppInfo> GetApps(){ArrayList<AppInfo> items=new ArrayList<AppInfo>();List<PackageInfo> packages=getPackageManager().getInstalledPackages(0);if(packages.size()>0){for (PackageInfo packageInfo : packages) {AppInfo item=new AppInfo();/*图标*/item.SetAppIcon(packageInfo.applicationInfo.loadIcon(getPackageManager()));/*应用程序名称*/item.SetAppName(packageInfo.applicationInfo.loadLabel(getPackageManager()).toString());/*包名称*/item.SetPackageName(packageInfo.packageName);/*版本编号*/item.SetVersionCode(packageInfo.versionCode);/*版本名称*/item.SetVersionName(packageInfo.versionName);//只显示非系统应用程序        if((packageInfo.applicationInfo.flags&ApplicationInfo.FLAG_SYSTEM)==0){        items.add(item);        }}}return items;}@Overridepublic 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;}}


更多相关文章

  1. Android获取手机的型号和系统版本
  2. unity和Android交互(内容部分为转载)
  3. android截图代码
  4. H5调android 的方法修改UI无效
  5. android典型代码系列(十)------获取一个应用程序的权限信息(反射
  6. ANDROID图片压缩代码
  7. Android(安卓)Manifest merger failed:××× 问题解决
  8. android 获得 View
  9. 彻底解决Android中文乱码

随机推荐

  1. 使用Eclipse开发Android时整个工程或第三
  2. GreenDao 的简介和使用
  3. Android开发要看的网站(不断更新中)
  4. 麦子学院Android应用开发工程师视频教程
  5. Android PinnedHeaderListView 详解
  6. Android 状态栏通知Notification(转载)
  7. padding和margin的区别及其属性
  8. [Android][设置最小(大)宽高]
  9. Android(安卓)Activity 和 Task 设计指导
  10. Android中的人脸检测(静态和动态)