效果图:
activity:
public class AppInfoActivity extends AppCompatActivity {
ListView listView;
List<AppInfo> mList = new ArrayList<>();
AppInfoAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_app_info);
getData();
listView = (ListView) findViewById(R.id.activity_app_info_list);
mAdapter = new AppInfoAdapter(this,mList);
listView.setAdapter(mAdapter);
}
private void getData() {
List<PackageInfo> packageInfos = getPackageManager().getInstalledPackages(0);
for (int i = 0; i < packageInfos.size(); i++) {
PackageInfo packageInfo = packageInfos.get(i);
//屏蔽掉系统应用
if ((ApplicationInfo.FLAG_SYSTEM & packageInfo.applicationInfo.flags) != 0)
{
continue;
}
AppInfo appInfo = new AppInfo();
appInfo.setAppName(packageInfo.applicationInfo.loadLabel(getPackageManager()).toString());
appInfo.setPackageName(packageInfo.packageName);
appInfo.setVersionCode(packageInfo.versionCode);
appInfo.setVersionName(packageInfo.versionName);
appInfo.setIcon(packageInfo.applicationInfo.loadIcon(getPackageManager()));
mList.add(appInfo);
}
}
}
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">
<ListView
android:id="@+id/activity_app_info_list"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
Adapter:
public class AppInfoAdapter extends BaseAdapter {
private List<AppInfo> mList;
private Context mContext;
private LayoutInflater mLayoutInflater;
public AppInfoAdapter(Context context,List<AppInfo> list)
{
this.mContext = context;
this.mList = list;
this.mLayoutInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return mList.size();
}
@Override
public Object getItem(int position) {
return mList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
AppInfo appInfo = mList.get(position);
View view = null;
AppInfoHolder appInfoHolder;
if (convertView == null)
{
view = mLayoutInflater.inflate(R.layout.item_app_info,parent,false);
appInfoHolder = new AppInfoHolder();
appInfoHolder.imageView = (ImageView) view.findViewById(R.id.item_image);
appInfoHolder.textView = (TextView) view.findViewById(R.id.item_name);
view.setTag(appInfoHolder);
convertView = view;
}else {
appInfoHolder = (AppInfoHolder) convertView.getTag();
}
appInfoHolder.imageView.setImageDrawable(appInfo.getIcon());
appInfoHolder.textView.setText(appInfo.getAppName());
return convertView;
}
private class AppInfoHolder{
ImageView imageView;
TextView textView;
}
}
xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:gravity="center_vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/item_image"
android:layout_width="50dp"
android:layout_height="50dp" />
<TextView
android:id="@+id/item_name"
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="50dp" />
</LinearLayout>
实体类:
public class AppInfo {
private String appName = "";
private String packageName = "";
private String versionName = "";
private int versionCode = 0;
private Drawable icon;
public String getAppName() {
return appName;
}
public void setAppName(String appName) {
this.appName = appName;
}
public String getPackageName() {
return packageName;
}
public void setPackageName(String packageName) {
this.packageName = packageName;
}
public String getVersionName() {
return versionName;
}
public void setVersionName(String versionName) {
this.versionName = versionName;
}
public int getVersionCode() {
return versionCode;
}
public void setVersionCode(int versionCode) {
this.versionCode = versionCode;
}
public Drawable getIcon() {
return icon;
}
public void setIcon(Drawable icon) {
this.icon = icon;
}
}