zoukankan      html  css  js  c++  java
  • 团队博客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可以获得应用程序及其相关信息。

  • 相关阅读:
    LeetCode 275. H-Index II
    LeetCode 274. H-Index
    LeetCode Gray Code
    LeetCode 260. Single Number III
    LeetCode Word Pattern
    LeetCode Nim Game
    LeetCode 128. Longest Consecutive Sequence
    LeetCode 208. Implement Trie (Prefix Tree)
    LeetCode 130. Surrounded Regions
    LeetCode 200. Number of Islands
  • 原文地址:https://www.cnblogs.com/XJXYJ/p/5835830.html
Copyright © 2011-2022 走看看