Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android實現軟件列表的點擊啟動另外一個程序功能【附demo源碼下載】

Android實現軟件列表的點擊啟動另外一個程序功能【附demo源碼下載】

編輯:關於Android編程

本文實例講述了Android實現軟件列表的點擊啟動另外一個程序功能。分享給大家供大家參考,具體如下:

目前面世的許多軟件中有這麼一個功能:設備中安裝了哪些軟件,他們會以一個軟件列表清單的形式向用戶展示出來。

今天我們就來實現這一功能:

運行環境: motorola defy+ 系統2.3.6

主要 API : PackageInfo,PackageManager,LayoutInflater,ApplicationInfo

PackageManger類,它的主要職責是管理應用程序包。 通過它,我們就可以獲取應用程序信息

通過PackageManager獲取應用程序相關信息,再通過listView顯示出相應信息。

直接上主要代碼了

public class AppListView extends LinearLayout implements OnItemClickListener{
  private final static String TAG = "AppListView";
  private ListView mListView;
  private TextView mTvTitle;
  private List<AppInfo> mAppList;
  private Context mContext;
  private LayoutInflater mInflater;
  private PackageManager mPacManager;
  public AppListView(Context context, AttributeSet attrs) {
    super(context, attrs);
    init(context);
  }
  public AppListView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    init(context);
  }
  public AppListView(Context context)
  {
    super(context);
    init(context);
  }
  private void init(Context c)
  {
    mContext = c;
    mInflater = (LayoutInflater)c.getSystemService
         (Context.LAYOUT_INFLATER_SERVICE);
    this.addView(mInflater.inflate(R.layout.activity_main,null,false));
    mListView = (ListView)this.findViewById(R.id.listView);
    mTvTitle  = (TextView)this.findViewById(R.id.title);
    loadAppData();
    mListView.setAdapter(new MyAdapter(c));
    mListView.setOnItemClickListener(this);
    Log.d(TAG, "一共"+mAppList.size());
  }
  // 加載應用軟件數據 軟件名稱,包名,對應的圖標等等
  private void loadAppData()
  {
    if(mAppList != null){
      mAppList.clear();
    }else{
      mAppList = new ArrayList<AppInfo>();
    }
    mPacManager = mContext.getPackageManager();
    List<PackageInfo> packages = mPacManager.getInstalledPackages(0);
    for(int i=0; i<packages.size(); i++){
      PackageInfo pi = packages.get(i);
      AppInfo ai = new AppInfo();
      ai.packageName = pi.packageName;
      ai.appName = pi.applicationInfo.loadLabel(mPacManager).toString();
      ai.appIcon = pi.applicationInfo.loadIcon(mPacManager);
      mAppList.add(ai);
    }
    mTvTitle.setText("本機所安裝的軟件總數:"+packages.size()+"個");
  }
  // 為ListView自定義適配器
  class MyAdapter extends BaseAdapter
  {
    public MyAdapter(Context c)
    {
      mContext = c;
    }
    @Override
    public int getCount() {
      return mAppList == null?0:mAppList.size();
    }
    @Override
    public Object getItem(int arg0) {
      return mAppList == null?null:mAppList.get(arg0);
    }
    @Override
    public long getItemId(int arg0) {
      return arg0;
    }
    @Override
    public View getView(int arg0, View arg1, ViewGroup arg2) {
      View view;
      if(arg1 == null){
        view = mInflater.inflate(R.layout.app_list_item, null);
      }else{
        view = arg1;
      }
      AppInfo ai = (AppInfo)getItem(arg0);
      ImageView appIcon  = (ImageView)view.findViewById(R.id.appIcon);
      TextView appName  = (TextView)view.findViewById(R.id.appName);
      TextView appPackage = (TextView)view.findViewById(R.id.appPackage);
      appIcon.setImageDrawable(ai.appIcon);
      appName.setText(ai.appName);
      appPackage.setText(ai.packageName);
      return view;
    }
  }
  // 處理ListView的item的點擊操作,我這裡是啟動該應用程序
  @Override
  public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    Toast.makeText(mContext, arg2+"", Toast.LENGTH_SHORT).show();
    // 獲取本次item的包名
    String packName = mAppList.get(arg2).packageName;
    // 啟動此程序
    Intent intent = mPacManager.getLaunchIntentForPackage(packName);
    mContext.startActivity(intent);
  }
  // 軟件載體
  public class AppInfo {
    // 軟件名稱
    public String appName="";
    // 軟件包名
    public String packageName="";
    // 軟件圖標
    public Drawable appIcon=null;
  }
}

public abstract Intent getLaunchIntentForPackage (String packageName)

這個方法通過包名返回一個Intent , 然後通過StartActivity(Intent)啟動應用程序

完整實例代碼點擊此處本站下載

下面是程序運行的效果圖:

更多關於Android相關內容感興趣的讀者可查看本站專題:《Android控件用法總結》、《Android視圖View技巧總結》、《Android文件操作技巧匯總》、《Android操作SQLite數據庫技巧總結》、《Android操作json格式數據技巧總結》、《Android數據庫操作技巧總結》、《Android編程之activity操作技巧總結》、《Android編程開發之SD卡操作方法匯總》、《Android開發入門與進階教程》及《Android資源操作技巧匯總》

希望本文所述對大家Android程序設計有所幫助。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved