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. 关于使用adb命令安装apk到手机中的问题
  2. Android(安卓)Snake
  3. Android中日志信息的打印方式
  4. Android在TextView中设置图片显示问题
  5. Android—自动弹出软键盘
  6. android 线程通信Handler Bundle
  7. android tools 汇总
  8. 最全面的Android学习路线 思维导图附知识
  9. Android 开发中最常用的 GitHub 优秀的 A
  10. Android Bluetooth研究