团队博客3

今天对于基本的界面进行了简单的制作,对于本地文件(包括图片、音乐、视频、应用程序)进行了获取。

界面截图:

  

简单代码:

import java.io.File;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import com.example.shuxing.AppInfor;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.graphics.drawable.Drawable;


public class AppInforService {
	
	private Context context;
	private PackageManager pm;
	public AppInforService(Context context)
	{
		this.context=context;
		pm=context.getPackageManager();
	}
	
	/*得到手机中所有的应用程序信息*/
	public List<AppInfor> getAppInfor() throws Exception
	{
		//创建要返回的集合对象
		List<AppInfor> appInfor =new ArrayList<AppInfor>();
		//获取手机中所有安装的应用集合
		List<ApplicationInfo> applicationInfor=pm.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);
		//遍历所有的应用集合
		for(ApplicationInfo info : applicationInfor)
		{
			if ((info.flags & ApplicationInfo.FLAG_SYSTEM) == 0)  
	        {  
				AppInfor appInfo=new AppInfor();
				
				//获取应用程序的图标
				Drawable app_icon=info.loadIcon(pm);
				appInfo.setIcon(app_icon);
				
				//获取应用名称
				String app_name=info.loadLabel(pm).toString();
				appInfo.setName(app_name);
				
				//获取应用的包名
				String packageName=info.packageName;
				appInfo.setPackageName(packageName);
				
				//获取版本信息
				try
				{
					PackageInfo packageInfo=pm.getPackageInfo(packageName, 0);
					String appversion=packageInfo.versionName;
					appInfo.setAppversion(appversion);
				}catch(NameNotFoundException e){
					e.printStackTrace();
				}
				//获取路径
				String path=info.sourceDir;
				appInfo.setPath(path);
				
				//更新显示当前包得大小信息
				String dir=info.publicSourceDir;
		        int value=Integer.valueOf((int)new File(dir).length());
		        BigDecimal apkSize=parseApkSize(value);
		        String size=apkSize.toString();
		        appInfo.setSize(size);
				appInfor.add(appInfo);
	        }
			
			
		}
		return appInfor;
	}
	private BigDecimal parseApkSize(int size) {
	    BigDecimal bd = new BigDecimal((double)size/(1024*1024));
	                BigDecimal setScale = bd.setScale(2, BigDecimal.ROUND_DOWN);
	    return setScale;
	}
}

  获取本地文件所使用的类是:PackageManager 。

  PackageManager主要是管理应用程序包,通过PackageManager可以获得应用程序及其相关信息。

原文地址:https://www.cnblogs.com/XJXYJ/p/5835830.html