android 获取应用列表 点击打开应用

main.xml源码:用gridview控件显示每个应用图标及名称

<?xml version="1.0" encoding="utf-8"?>   

apps.xml源码:每个gridview item里面的内容
<?xml version="1.0" encoding="utf-8"?>    


activity中的源码

package com.android.getApps;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.content.Context;import android.content.Intent;import android.content.pm.PackageInfo;import android.content.pm.PackageManager;import android.graphics.drawable.Drawable;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.BaseAdapter;import android.widget.GridView;import android.widget.ImageView;import android.widget.TextView;public class Apps extends Activity {// 用来记录应用程序的信息List list;private GridView gridview;private PackageManager pManager;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);this.setContentView(R.layout.main);// 取得gridviewgridview = (GridView) findViewById(R.id.gridview);// 获取图片、应用名、包名pManager = Apps.this.getPackageManager();List appList = getAllApps(Apps.this);list = new ArrayList();for (int i = 0; i < appList.size(); i++) {PackageInfo pinfo = appList.get(i);AppsItemInfo shareItem = new AppsItemInfo();// 设置图片shareItem.setIcon(pManager.getApplicationIcon(pinfo.applicationInfo));// 设置应用程序名字shareItem.setLabel(pManager.getApplicationLabel(pinfo.applicationInfo).toString());// 设置应用程序的包名shareItem.setPackageName(pinfo.applicationInfo.packageName);list.add(shareItem);}// 设置gridview的Adaptergridview.setAdapter(new baseAdapter());// 点击应用图标时,做出响应gridview.setOnItemClickListener(new ClickListener());}public static List getAllApps(Context context) {List apps = new ArrayList();PackageManager pManager = context.getPackageManager();// 获取手机内所有应用List packlist = pManager.getInstalledPackages(0);for (int i = 0; i < packlist.size(); i++) {PackageInfo pak = (PackageInfo) packlist.get(i);// 判断是否为非系统预装的应用程序// 这里还可以添加系统自带的,这里就先不添加了,如果有需要可以自己添加// if()里的值如果<=0则为自己装的程序,否则为系统工程自带if ((pak.applicationInfo.flags & pak.applicationInfo.FLAG_SYSTEM) <= 0) {// 添加自己已经安装的应用程序apps.add(pak);}}return apps;}private class baseAdapter extends BaseAdapter {LayoutInflater inflater = LayoutInflater.from(Apps.this);@Overridepublic int getCount() {// TODO Auto-generated method stubreturn list.size();}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn null;}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubViewHolder holder;if (convertView == null) {// 使用View的对象itemView与R.layout.item关联convertView = inflater.inflate(R.layout.apps, null);holder = new ViewHolder();holder.icon = (ImageView) convertView.findViewById(R.id.apps_image);holder.label = (TextView) convertView.findViewById(R.id.apps_textview);convertView.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();}holder.icon.setImageDrawable(list.get(position).getIcon());holder.label.setText(list.get(position).getLabel().toString());return convertView;}}private class ViewHolder{private ImageView icon;private TextView label;}// 当用户点击应用程序图标时,将对这个类做出响应private class ClickListener implements OnItemClickListener {@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {//// 将应用所选的应用程序信息共享到Application中//MyApp appState = ((MyApp) getApplicationContext());//// 获取当前所在选项卡//String tab_id = appState.getTab_id();//// 设置所选应用程序信息//appState.set_AppInfo(tab_id, list.get(arg2).getLabel(), list.get(//arg2).getIcon(), list.get(arg2).getPackageName());Intent intent = new Intent();intent = Apps.this.getPackageManager().getLaunchIntentForPackage(list.get(arg2).getPackageName());startActivity(intent);// 销毁当前Activity//finish();}}// 自定义一个 AppsItemInfo 类,用来存储应用程序的相关信息private class AppsItemInfo {private Drawable icon; // 存放图片private String label; // 存放应用程序名private String packageName; // 存放应用程序包名public Drawable getIcon() {return icon;}public void setIcon(Drawable icon) {this.icon = icon;}public String getLabel() {return label;}public void setLabel(String label) {this.label = label;}public String getPackageName() {return packageName;}public void setPackageName(String packageName) {this.packageName = packageName;}}}
最终的效果

android 获取应用列表 点击打开应用_第1张图片

更多相关文章

  1. Android源码分析(四)-----Android源码编译及刷机步骤
  2. Android 源码分析-打电话和发短信
  3. android中Handler的源码分析
  4. Android 进阶16:IntentService 使用及源码解析
  5. Android应用程序的权限列表
  6. [Android]PhoneGap源码分析——CallbackServer异步回调
  7. [入门]Android的应用程序框架
  8. ubuntu 使用android studio 查看android(android-5.1.0_r3)源码
  9. Android应用程序剖析

随机推荐

  1. 关于Android(安卓)Matrix pre post 的理
  2. 認識Android的UID與權限
  3. android 学习九 Fragments 介绍(android3.
  4. Android(安卓)API Guides----Adding Cust
  5. Android(安卓)中的拿来主义(编译,反编译,AX
  6. Android[安卓] 版Air Video 远程播放电脑
  7. Android(安卓)沉浸式模式与常见状态栏和
  8. MAC Android(安卓)Studio编写Android(安
  9. 理解Android(安卓)Java垃圾回收机制
  10. Android获取手机WiFi IP地址,MAC地址和网