列出系统中所有的app程序,如下图。不多说,直接上代码,很简单的一个小程序。
布局文件代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <GridView android:id="@+id/apps_list" android:layout_width="wrap_content" android:layout_height="wrap_content" android:numColumns="4" > </GridView> </RelativeLayout>
MainActivity代码:
/** * 列出系统中所有的app. * @author 路国强. * */ public class MainActivity extends ActionBarActivity { // 系统中所有的app信息 private List<ResolveInfo> apps; // 用九宫格视图呈现所有app private GridView apps_list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); apps_list = (GridView) findViewById(R.id.apps_list); loadApps(); } private void loadApps() { // 获取系统所有app信息 Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); new ImageView(MainActivity.this); apps = getPackageManager().queryIntentActivities(mainIntent, 0); // 把信息设置到适配器中 apps_list.setAdapter(new AppsAdapter()); } public class AppsAdapter extends BaseAdapter { public AppsAdapter(){ } @Override public int getCount() { return apps.size(); } @Override public Object getItem(int i) { return apps.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { ImageView iv; if(view == null){ iv = new ImageView(MainActivity.this); iv.setScaleType(ImageView.ScaleType.FIT_CENTER); iv.setLayoutParams(new GridView.LayoutParams(50, 50)); } else { iv = (ImageView) view; } ResolveInfo info = apps.get(i); iv.setImageDrawable(info.activityInfo.loadIcon(getPackageManager())); return iv; } } }
配置清单文件无需修改。
时间: 2024-10-13 08:11:26