android 卸载程序、清除数据、停止服务使用方法

本文介绍了如何在Android平台上进行程序管理,包括查询并过滤所有应用、系统应用和第三方应用,获取应用的大小信息,以及执行清除用户数据、卸载应用和停止服务的操作。详细讲解了相关的方法实现,如使用PackageManager的隐藏方法和Binder服务。
摘要由CSDN通过智能技术生成
要实现卸载程序、清除数据、停止正在运行的服务这几大模块,现在将代码粗略总结如下:
  主要运用到的类有
  PackageManager
  ActivityManager
  ApplicationInfo
  RunningServiceInfo
  Method
  还有两个android.pm下的源文件用于生成桩,IPackageStatsObserver.java 和 IPackageDataObserver.java,由名字可以看出,他们是跟包的状态和大小有关的,在网上找到这两个文件的源码后,把他们放在工程src目录下的android.pm包下,自己建包。
  首先要获得系统中已经装了的apk,apk分为两类第一是系统的apk,第二是第三方的apk,所以在获取apk时可以指定一个过滤器,见如下代码:
  java代码 

  1. // 添加过滤 ,得到全部程序,系统程序,用户自己安装的程序

  2.   private List queryFilterAppInfo(int filter) {
  3.   // 查询所有已经安装的应用程序
  4.   List listAppcations = 
  5. pm.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);
  6.   Collections.sort(listAppcations,new 
  7. ApplicationInfo.DisplayNameComparator(pm));// 排序
  8.   List appInfos = new ArrayList(); // 保存过滤查到的AppInfo
  9.   // 根据条件来过滤
  10.   switch (filter) {
  11.   case FILTER_ALL_APP: // 所有应用程序
  12.   appInfos.clear();
  13.   for (ApplicationInfo app : listAppcations) {
  14.   if (app.packageName.equals("com.android.appmanager")) { // 过滤自己
  15.   continue;
  16.   }
  17.   appInfos.add(getAppInfo(app));
  18.   }
  19.   return appInfos;
  20.   case FILTER_SYSTEM_APP: // 系统程序
  21.   appInfos.clear();
  22.   for (ApplicationInfo app : listAppcations) {
  23.   if ((app.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
  24.   if (app.packageName.equals("com.android.appmanager""font-family:Arial, 
  25. Helvetica, sans-serif;">)// wifi { // 过滤自己
  26.   continue;
  27.   }
  28.   appInfos.add(getAppInfo(app));
  29.   }
  30.   }
  31.   return appInfos;
  32.   case FILTER_THIRD_APP: // 第三方应用程序
  33.   appInfos.clear();
  34.   for (ApplicationInfo app : listAppcations) {
  35.   // 非系统程序
  36.   if ((app.flags & ApplicationInfo.FLAG_SYSTEM) <= 0) {
  37.   if (app.packageName.equals("com.android.appmanager"))
  38.   continue;
  39.   }
  40.   appInfos.add(getAppInfo(app));
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值