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

來源:互聯網
上載者:User

標籤:

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

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<AppBean> getAllInstalledApks(Context context){List<AppBean> apksBean = new ArrayList<AppBean>();//擷取包管理器PackageManager manager = context.getPackageManager();//通過包管理器對象,擷取所有的安裝了的apk的資訊List<PackageInfo> 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;//判斷是否是系統的apkif((flag&ApplicationInfo.FLAG_SYSTEM)!=0){//ApplicationInfo.FLAG_SYSTEM表示系統的apk的flag標誌//是系統的apkbean.setSystem(true);//是系統應用的標記}else{//不是系統的apkbean.setSystem(false);}//判斷應用安裝在了系統還是sdif((flag & ApplicationInfo.FLAG_EXTERNAL_STORAGE)!=0){//安裝在了sd卡bean.setSd(true);//sd卡的標記}else{bean.setSd(false);//rom中的標記}//把擷取的每一個apk的資訊對象封裝到資料來源模型層apksBean.add(bean);}return apksBean;}}


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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.