Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android簡易實戰教程--第十一話《獲取手機所有應用信息Engine類詳解》

Android簡易實戰教程--第十一話《獲取手機所有應用信息Engine類詳解》

編輯:關於Android編程

如果想要獲取系統手機應用的詳細信息,那麼下邊代碼可以直接作為模板使用。筆者對每一行代碼都做了注解,供您參考。直接上代碼:

 

package com.example.itydl.engines;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import com.example.itydl.domain.AppBean;

import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Environment;

/**
 * Engine類,獲取所有安裝的apk詳細信息
 * @author ydl
 *
 */
public class AppManagerEngine {
	/**
	 * 
	 * @param context
	 * @return
	 * 		sd卡的可用空間,單位為byte
	 */
	public static long getSDAvailSpace(Context context){
		long sdAvaliSpace = 0;
		
		//獲取sd卡的目錄
		File externalStorageDirectory = Environment.getExternalStorageDirectory();
		//獲取sd卡的可用空間。通過文件夾來間接計算剩余空間大小
		sdAvaliSpace = externalStorageDirectory.getFreeSpace();
		//把獲取的剩余數據返回
		return sdAvaliSpace;
	}
	
	/**
	 * 
	 * @param context
	 * @return
	 * 		手機ROM中的剩余空間
	 */
	public static long getRomAvailSpace(Context context){
		long romAvaliSpace = 0;
		//獲取rom所有目錄結構
		File dataDirectory = Environment.getDataDirectory();
		//獲取rom的可用空間。通過文件夾來間接計算剩余空間大小
		romAvaliSpace = dataDirectory.getFreeSpace();
		//把獲取的剩余數據返回
		return romAvaliSpace;
	}
	
	/**
	 *
	 * @param context
	 * @return
	 * 		所有的安裝了的apk的詳細信息
	 */
	public static List getAllInstalledApks(Context context){
		
		List apksBean = new ArrayList();
		
		//獲取包管理器
		PackageManager manager = context.getPackageManager();
		//通過包管理器對象,獲取所有的安裝了的apk的信息
		List installedPackages = manager.getInstalledPackages(0);//Return a List of all packages that are installed on the device.
		//遍歷所有應用包信息,分別得到每個應用包的詳細信息。就可以對該應用的數據在界面顯示了
		for (PackageInfo packageInfo : installedPackages) {
			//把每個包的應用信息,封裝到javabean裡面。創建AppBean類
			AppBean bean = new AppBean();
			
			//設置apk的包名
			bean.setPackName(packageInfo.packageName);
			//設置apk的名字,記住
			bean.setAppName(packageInfo.applicationInfo.loadLabel(manager)+"");//loadLabel(manager)獲取標簽
			//設置apk的圖標
			bean.setIcon(packageInfo.applicationInfo.loadIcon(manager));
			//設置apk的大小。通過獲取apk文件,間接獲取該apk的占用空間大小
			String sourceDir = packageInfo.applicationInfo.sourceDir;//得到該應用的一個路徑
			//得到該路徑的文件
			File file = new File(sourceDir);
			//得到apk的大小,字節為單位
			bean.setSize(file.length());//Returns the length of this file in bytes. 
			//根據標志位,是否是系統apk或者用戶apk
			//獲取該apk的flag屬性
			int flag = packageInfo.applicationInfo.flags;
			
			//判斷是否是系統的apk
			if((flag&ApplicationInfo.FLAG_SYSTEM)!=0){//ApplicationInfo.FLAG_SYSTEM表示系統的apk的flag標志
				//是系統的apk
				bean.setSystem(true);//是系統應用的標記
			}else{
				//不是系統的apk
				bean.setSystem(false);
			}
			
			//判斷應用安裝在了系統還是sd
			if((flag & ApplicationInfo.FLAG_EXTERNAL_STORAGE)!=0){
				//安裝在了sd卡
				bean.setSd(true);//sd卡的標記
			}else{
				bean.setSd(false);//rom中的標記
			}
			
			//把獲取的每一個apk的信息對象封裝到數據源模型層
			apksBean.add(bean);
			
		}
		
		return apksBean;
	}
}
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved