編輯:關於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;
}
}
Android 自定義ProgressDialog示例實現
閒來無事,總結了兩個自定義的ProgressDialog,大家可以參考下,根據自己需要進行選擇修改:實現效果:示例1:示例2: 代碼如下:MainA
[Android] TextSwitcher -- 怎麼做到的
在上文當中,我們描述了如何使用TextSwitcher控件。本文將通過分析Android Framework層源碼來闡釋它是如何實現文本的平滑切換的的。TextSwitc
Android 對話框 Dialog使用實例講解
對話框 Dialog什麼是對話框對話框是在當前的頁面之上彈出的小窗口, 用於顯示一些重要的提示信息, 提示用戶的輸入,確認信息,或顯示某種狀態.如 : 顯示進度條對話框,
Android Ndk中C與JAVA之間的互相調用
本例實現一個簡單的場景: 1、使用C編寫一個方法,接收1個參數,方法中調用Java的方法。 2、Java類中編寫一個方法,接收一個參數。 3、模擬調用場景:點擊按鈕 -&