您的位置:首页 > 移动开发 > Android开发

【android学习】获取手机已安装程序

2015-09-08 12:23 411 查看
首先用来获取手机的内存剩余空间,以及SD的剩余空间。机械硬盘的内存=一个扇片大小×总的扇片个数。SDCard可用空间 = 一个扇片大小×SDCard剩余的扇片个数
	/**	 * 获取某个目录的可用空间	 * @param path	 * @return	 */	private long getAvialSpace(String path){//		String path = Environment.getExternalStorageDirectory().getPath();        StatFs stat = new StatFs(path);        long blockSize = stat.getBlockSize();//获取分区的大小        long totalBlocks = stat.getBlockCount();//获取分区的个数        long availableBlocks = stat.getAvailableBlocks();//获取可用区块的个数        return blockSize*availableBlocks;	}
获得安装应用程序的信息
	/**	 * 获取所有的安装的应用程序信息	 * @param context	 * @return	 */	private List<AppInfo> getAppInfo(Context context){		PackageManager pm = context.getPackageManager();		List<PackageInfo> Packages = pm.getInstalledPackages(0);		List<AppInfo> appInfos = new ArrayList<AppInfo>();		for (PackageInfo packageInfo : Packages) {			String packageName = packageInfo.packageName;			Drawable icon = packageInfo.applicationInfo.loadIcon(pm);			String name = packageInfo.applicationInfo.loadLabel(pm).toString();			AppInfo appInfo = new AppInfo();			appInfo.setIcon(icon);			appInfo.setName(name);			appInfo.setPackagename(packageName);			appInfos.add(appInfo);		}		return appInfos;	}
下面是整个应用程序的代码MainActivity.java
public class MainActivity extends ActionBarActivity {		TextView cache;	TextView sdcard;	ListView listView;		List<AppInfo> infos;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);         findID();        infos = getAppInfo(this);        listView.setAdapter(new AppManagerAdapter(infos));    }    /**     * 查找ID     */	private void findID() {		cache = (TextView) findViewById(R.id.cache);		sdcard = (TextView) findViewById(R.id.sdcard);		listView = (ListView) findViewById(R.id.listview);				long sdSize = getAvialSpace(Environment.getExternalStorageDirectory().getPath());		long romSize = getAvialSpace(Environment.getDataDirectory().getPath());				sdcard.setText(""+Formatter.formatFileSize(this, sdSize));		cache.setText(""+Formatter.formatFileSize(this, romSize));	}	/**	 * 适配器	 * @author zkq	 */	private class AppManagerAdapter extends BaseAdapter{		List<AppInfo> infoList;		public AppManagerAdapter(List<AppInfo> list) {			this.infoList = list;		}		@Override		public int getCount() {			return infoList.size();		}		@Override		public Object getItem(int arg0) {			// TODO Auto-generated method stub			return arg0;		}		@Override		public long getItemId(int arg0) {			// TODO Auto-generated method stub			return arg0;		}		@Override		public View getView(int position, View convertView, ViewGroup parent) {			ViewHolder  holder ;			if (convertView == null) {				holder = new ViewHolder();				convertView = LayoutInflater.from(MainActivity.this).inflate(R.layout.item, null);				holder.imageView = (ImageView) convertView.findViewById(R.id.imageview);				holder.name = (TextView) convertView.findViewById(R.id.name);				holder.pack = (TextView) convertView.findViewById(R.id.pack);				convertView.setTag(holder);			}else {				holder = (ViewHolder) convertView.getTag();			}			holder.imageView.setImageDrawable(infoList.get(position).getIcon());			holder.name.setText(infoList.get(position).getName());			holder.pack.setText(infoList.get(position).getPackagename());			return convertView;		}						private class ViewHolder{			ImageView imageView ;			TextView name;			TextView pack;		}	}			/**	 * 获取某个目录的可用空间	 * @param path	 * @return	 */	private long getAvialSpace(String path){//		String path = Environment.getExternalStorageDirectory().getPath();        StatFs stat = new StatFs(path);        long blockSize = stat.getBlockSize();//获取分区的大小        long totalBlocks = stat.getBlockCount();//获取分区的个数        long availableBlocks = stat.getAvailableBlocks();//获取可用区块的个数        return blockSize*availableBlocks;	}    	/**	 * 获取所有的安装的应用程序信息	 * @param context	 * @return	 */	private List<AppInfo> getAppInfo(Context context){		PackageManager pm = context.getPackageManager();		List<PackageInfo> Packages = pm.getInstalledPackages(0);		List<AppInfo> appInfos = new ArrayList<AppInfo>();		for (PackageInfo packageInfo : Packages) {			String packageName = packageInfo.packageName;			Drawable icon = packageInfo.applicationInfo.loadIcon(pm);			String name = packageInfo.applicationInfo.loadLabel(pm).toString();			AppInfo appInfo = new AppInfo();			appInfo.setIcon(icon);			appInfo.setName(name);			appInfo.setPackagename(packageName);			appInfos.add(appInfo);		}		return appInfos;	}    }
AppInfo.java
public class AppInfo {	private Drawable icon;	public Drawable getIcon() {		return icon;	}	@Override	public String toString() {		return "AppInfo [name=" + name + ", packagename=" + packagename + "]";	}	public void setIcon(Drawable icon) {		this.icon = icon;	}	public String getName() {		return name;	}	public void setName(String name) {		this.name = name;	}	public String getPackagename() {		return packagename;	}	public void setPackagename(String packagename) {		this.packagename = packagename;	}	private String name;	private String packagename;}
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    android:orientation="vertical"    tools:context="com.example.appmanager.MainActivity" >    <RelativeLayout         android:layout_width="wrap_content"        android:layout_height="wrap_content"        >            <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentLeft="true"        android:text="内存可用" />    <TextView         android:id="@+id/cache"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentRight="true"        android:text="128M"        />    </RelativeLayout>        <RelativeLayout         android:layout_width="wrap_content"        android:layout_height="wrap_content"        >            <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentLeft="true"        android:text="SDcard可用" />    <TextView         android:id="@+id/sdcard"         android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentRight="true"        android:text="128M"        />    </RelativeLayout>                <ListView         android:id="@+id/listview"        android:layout_width="match_parent"        android:layout_height="wrap_content"        ></ListView></LinearLayout>
item.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="horizontal" >    <ImageView        android:id="@+id/imageview"        android:layout_width="50dp"        android:layout_height="50dp"        android:src="@drawable/ic_launcher" />    <LinearLayout        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:orientation="vertical" >        <TextView            android:id="@+id/name"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_alignParentLeft="true"            android:text="内存可用" />        <TextView            android:id="@+id/pack"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_alignParentRight="true"            android:text="128M" />    </LinearLayout></LinearLayout>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: