Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 獲取android設備已安裝應用信息

獲取android設備已安裝應用信息

編輯:關於Android編程

本文將介紹如何獲取設備中已經安裝的應用信息,包括:應用名稱、包名、圖標等。

獲得信息列表後,選擇某一項記錄還可以啟動對應的應用!

圖1圖2

 

1.代碼實現

 

package com.example.showapplist;

import java.util.ArrayList;
import java.util.List;

import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;

public class AppListFragment extends ListFragment {

	private ArrayList appList = new ArrayList();

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		getAppList();
		AppAdapter adapter = new AppAdapter(this.getActivity(), appList);
		setListAdapter(adapter);
	}

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		return super.onCreateView(inflater, container, savedInstanceState);
	}

	@Override
	public void onListItemClick(ListView l, View v, int position, long id) {
		// 啟動所選應用
        startActivity(appList.get(position).appIntent);
	}
	
	/**
	 * 獲取非系統應用信息列表
	 */
	private void getAppList() {
		PackageManager pm = this.getActivity().getPackageManager();
		// Return a List of all packages that are installed on the device.
		List packages = pm.getInstalledPackages(0);
		for (PackageInfo packageInfo : packages) {
			// 判斷系統/非系統應用
			if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0)	// 非系統應用
			{
				AppInfo info = new AppInfo();
				info.appName = packageInfo.applicationInfo.loadLabel(pm)
						.toString();
				info.pkgName = packageInfo.packageName;
				info.appIcon = packageInfo.applicationInfo.loadIcon(pm);
				// 獲取該應用安裝包的Intent,用於啟動該應用
				info.appIntent = pm.getLaunchIntentForPackage(packageInfo.packageName); 
				appList.add(info);
			} else {
				// 系統應用        
			}

		}
	}
}

 

 

其中,getAppList()方法獲得了當前設備所安裝的應用信息。

通過以下代碼判斷某一應用是系統應用還是非系統應用:

 

			// 判斷系統/非系統應用
			if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0)	// 非系統應用
			{
			} else {
				// 系統應用        
			}

通過下面代碼獲得啟動另外一個應用所需的Intent:

 

 

				// 獲取該應用安裝包的Intent,用於啟動該應用
				info.appIntent = pm.getLaunchIntentForPackage(packageInfo.packageName); 

 

 

 

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