本文主要是介绍android 卸载程序、清除数据、停止服务使用方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
要实现卸载程序、清除数据、停止正在运行的服务这几大模块,现在将代码粗略总结如下:
主要运用到的类有
PackageManager
ActivityManager
ApplicationInfo
RunningServiceInfo
Method
还有两个android.pm下的源文件用于生成桩,IPackageStatsObserver.java 和 IPackageDataObserver.java,由名字可以看出,他们是跟包的状态和大小有关的,在网上找到这两个文件的源码后,把他们放在工程src目录下的android.pm包下,自己建包。
首先要获得系统中已经装了的apk,apk分为两类第一是系统的apk,第二是第三方的apk,所以在获取apk时可以指定一个过滤器,见如下代码:
java代码
- // 添加过滤 ,得到全部程序,系统程序,用户自己安装的程序
-
- private List queryFilterAppInfo(int filter) {
- // 查询所有已经安装的应用程序
- List listAppcations =
- pm.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);
- Collections.sort(listAppcations,new
- ApplicationInfo.DisplayNameComparator(pm));// 排序
- List appInfos = new ArrayList(); // 保存过滤查到的AppInfo
- // 根据条件来过滤
- switch (filter) {
- case FILTER_ALL_APP: // 所有应用程序
- appInfos.clear();
- for (ApplicationInfo app : listAppcations) {
- if (app.packageName.equals("com.android.appmanager")) { // 过滤自己
- continue;
- }
- appInfos.add(getAppInfo(app));
- }
- return appInfos;
- case FILTER_SYSTEM_APP: // 系统程序
- appInfos.clear();
- for (ApplicationInfo app : listAppcations) {
- if ((app.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
- if (app.packageName.equals("com.android.appmanager""font-family:Arial,
- Helvetica, sans-serif;">)// wifi { // 过滤自己
- continue;
- }
- appInfos.add(getAppInfo(app));
- }
- }
- return appInfos;
- case FILTER_THIRD_APP: // 第三方应用程序
- appInfos.clear();
- for (ApplicationInfo app : listAppcations) {
- // 非系统程序
- if ((app.flags & ApplicationInfo.FLAG_SYSTEM) <= 0) {
- if (app.packageName.equals("com.android.appmanager"))
- continue;
- }
- appInfos.add(getAppInfo(app));
这篇关于android 卸载程序、清除数据、停止服务使用方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!