Android 读取安装的非系统应用程序
16lz
2021-01-23
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;}}
更多相关文章
- ANDROID图片压缩代码
- Android 如何在Java代码中手动设置控件的marginleft
- 从源码中查看当前android版本
- android典型代码系列(十)------获取一个应用程序的权限信息(反射
- android播放音乐文件代码
- 分享一段Android基于https协议POST数据的代码
- 编写android拨打电话apk应用实例代码