【android学习】获取手机已安装程序
来源:互联网 发布:域名 权利冲突 伪命题 编辑:程序博客网 时间:2024/05/20 05:27
首先用来获取手机的内存剩余空间,以及SD的剩余空间。
获得安装应用程序的信息
AppInfo.java
activity_main.xml
item.xml
机械硬盘的内存=一个扇片大小×总的扇片个数。
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;}@Overridepublic int getCount() {return infoList.size();}@Overridepublic Object getItem(int arg0) {// TODO Auto-generated method stubreturn arg0;}@Overridepublic long getItemId(int arg0) {// TODO Auto-generated method stubreturn arg0;}@Overridepublic 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;}@Overridepublic 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>
0 0
- 【android学习】获取手机已安装程序
- Android获取已安装程序的信息
- 【Android】获取手机中已安装apk文件信息
- 获取Android手机里所有已安装的APP
- Android获取手机已安装的应用程序并启动
- 【Android】获取手机中已安装apk文…
- 获取Android手机里所有已安装的APP
- Android-获取手机已经安装的程序
- Android获取系统已安装应用软件程序(apk)信息
- Android获取系统已安装应用软件程序(apk)信息
- 获取android系统中已安装程序的信息
- Android之获取手机上已安装的所有的应用程序的信息,并判断是否安装了某应用程序(系统程序或非系统应用程序判断)
- 获取手机上已安装应用信息
- 获取手机中已安装的应用
- 从”茄子快传”看应用程序如何获取手机已安装程序的apk文件
- 获取android手机中已安装应用信息以及应用安装和卸载代码集合
- Android获取已安装应用大小---参考学习
- Android-获取手机已经安装的程序-推送好友
- 开发笔记(未完)
- Unity 内存管理
- LeetCode 216. Combination Sum III
- react-native试玩(27)-上拉菜单API
- 在惠普学习白盒测试的理解
- 【android学习】获取手机已安装程序
- 学习排序算法
- cisco路由配置dhcp
- leetCode #144 Binary Tree Preorder Traversal
- LeetCode 219. Contains Duplicate II
- http://blog.csdn.net/eyu8874521/article/details/22605695
- dota war3map.j 解读
- [CodeForces 490B]Queue[实现]
- !function(),+function()