Android项目——AppManager

tech2024-10-04  18

一、功能介绍

1、浏览本机应用

此AppManager可以浏览安卓系统下所安装的应用,可自动过滤系统应用和不可进行卸载的第三方应用。

此图为真机软件运行截图(此后均为模拟器运行截图)

为了满足用户需求,提供三种浏览已安装应用的方式,分别为按名称,按日期(最近更新和安装的应用)和按大小进行排序。点击左上角的菜单按钮可以实现不同浏览方式的切换。

在标题栏下方设置有提示信息栏,包括当前的排序方式和应用的个数。

下面为分别按大小、名称和日期排序的示意图:

2、卸载应用

卸载应用为AppManager的主要功能,点击卸载按钮,在弹出的对话中选择确定即可卸载相应的应用。

3、搜索应用及运行相关应用

此AppManager还拥有搜索相关应用的功能,点击应用上方的搜索按钮,输入想搜索的内容,点击右侧箭头按钮即可得到搜索结果,可实行多次搜索。

点击相关应用可直接打开此应用

右图为点击AppCh5打开的相关应用

二、代码原理

1、界面布局

布局主要包括提示信息栏和ListView两部分,采用相对布局使ListView对象在提示信息栏的下方。

对ListView中每一个应用的item创建性的布局文件,在其中显示图标,应用信息以及卸载按钮

为了实现浏览方式切换和搜索功能,创建menu文件,其中包含4个item,分别为按名称排序、按大小排序、按日期排序和搜索。

2、活动

为了完成相应的活动,在所有的代码之前,需要先创建一个用于存储应用信息的类AppInfo,其中应包括以下内容:

/**包名*/ public String packageName; /**版本号*/ public String versionName; /**版本号*/ public int versionCode; /**第一次安装时间*/ public long insTime; /**更新*/ public long updateTime; /**程序名*/ public String appName; /**图标*/ public Drawable icon; /**字节大小*/ public long byteSize; /**大小*/ public String size;

以上为活动所需的准备工作,下面来看具体的相关活动。

1)刷新列表

首先是第一次进入程序,需要加载系统的应用,创建一个刷新列表的方法,在其中添加新的线程,获取系统已安装的可操作应用,获取应用信息通过Utils.getAppList()方法实现,具体方法在第5部分工具类中介绍。

同时此处添加一个进度对话框来提示用户正在加载相关应用。

2)切换排序方式

首先创建三个不同的比较器,分别按照日期,大小和名称来排序,分别按照updateTime、packageName和byteSize来进行相关比较,通过重写onOptionsItemSelected()方法,比较选中的项的id和三种排序方式比对,选择相应的比较器实现不同的排序方式。

3)搜索功能

设置搜索文本监听器,重写其中的两个方法。

一个是点击提交按钮(需预先设置提交按钮为true),此时采取Utils.getSearchResult()方法获得搜索结果,具体方法同样在工具类中介绍。

另一个是文本改变时的操作,本应用的搜索功能并不需要在文本改变时进行相关操作,所以不做修改,保持原有的形式。

4)卸载和打开应用功能

卸载应用首先需要为Button按钮设置监听器,在用户点击后获取应用在ListView中的位置和包名,使用Utils.uninstallApk()方法卸载相应应用,同时在卸载结束后刷新列表。

打开应用则同样通过获取相应点击的item的应用包名,采用Utils.openPackage()方法打开应用(和卸载的方法类似,在工具类中不再赘述)。

5)工具类

================================

Utils.getAppList()

首先定义一个List< AppInfo>集合,命名为list,其中的对象均为先前创建的AppInfo类。

实例化一个PackageManager,命名为pm,通过pm.getInstalledPackages()方法获得所有已安装包的信息,存储在一个 List< PackageInfo>中,遍历其中的所有元素,并且筛选出去系统应用和AppManager应用本身。将PackageInfo中的信息放入AppInfo类的一个对象中去,将这个对象添加进list。结束遍历后获得完整的包含应用信息的list。

在Adapter中将对应的图标、应用名、版本号和大小信息交给视图当中的ListView中的每一项。

================================

Utils.getSearchResult()

此方法的返回值是一个List< AppInfo>,采用以下方法判断是否包含搜索的内容:

if(app.appName.toLowerCase().contains(key.toLowerCase()){ }

如果判断语句成立则将这个app添加进新创建的结果集合中,最后把这个集合作为返回值提交。

================================

Utils.uninstallApk()

卸载应用的代码如下:

Uri uri = Uri.parse("package:" + packageName); Intent intent = new Intent(Intent.ACTION_DELETE, uri);

================================

三、思考与总结

通过此项目的实践,发现自己的Android基础仍有待加强,希望在今后一点点补上短缺,对Android有更深的理解。

最新回复(0)