Android簡易実戦チュートリアル--第11話「携帯電話のすべてのアプリケーション情報を取得するEngine類の詳細」
システムの携帯電話アプリの詳細を取得したい場合は、下のコードを直接テンプレートとして使用することができます.筆者は各行のコードに注釈をつけたので、参考にしてください.直接コード:
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;
// 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;
}
}