android 卸载程序、清除数据、停止服务用法
要实现卸载程序、清除数据、停止正在执行的服务这几大模块,如今将代码粗略总结例如以下:
主要运用到的类有
PackageManager
ActivityManager
ApplicationInfo
RunningServiceInfo
Method
还有两个android.pm下的源文件用于生成桩,IPackageStatsObserver.java 和 IPackageDataObserver.java,由名字能够看出,他们是跟包的状态和大小有关的,在网上找到这两个文件的源代码后,把他们放在projectsrc文件夹下的android.pm包下,自己建包。
首先要获得系统中已经装了的apk,apk分为两类第一是系统的apk,第二是第三方的apk,所以在获取apk时能够指定一个过滤器,见例如以下代码:
java代码
AppInfo是我自定义的一个类,里面包括了应用程序的包名、数据区大小、代码区大小、等等一些属性。
好,如今我们来获取app包的数据区大小、缓存区大小、代码区大小,这里要用反射的机制去获取PackageManager类的隐藏方法getPackageSizeInfo(),这种方法的详细实现是通过回调函数来实现的,这里要用到IPackageStatsObserver这个类生成的桩。
java代码
或得到app的大小数据后,封装成消息发送出去,这是最好的方法!!
这里也介绍一个将long型数据转换成文件大小格式的数据。
java代码
好,如今我们来清除用户数据,这里要用到之前下载的那个文件IPackageDataObserver,跟获取app大小一样的,通过回调来实现。
java代码
好,如今到卸载程序的时候了,看代码
java代码
关于apk的管理就差点儿相同了,如今来看看正在执行的服务的管理
首先,获取正在执行的服务:
这里我的RunningInfo是我自定义的一个类,主要服务的一些属性,比方包名、uid、pid等等那些
java代码
好,获取到了正在执行的服务之后,就能够任意停止服务了,停止服务的代码是:
java代码
相同也是用反射的机制来得到隐藏类。
到这里,应用程序管理的功能就差点儿相同了,
剩下就仅仅是界面上的事情和程序的处理流程上的事情,应该还好!
主要运用到的类有
PackageManager
ActivityManager
ApplicationInfo
RunningServiceInfo
Method
还有两个android.pm下的源文件用于生成桩,IPackageStatsObserver.java 和 IPackageDataObserver.java,由名字能够看出,他们是跟包的状态和大小有关的,在网上找到这两个文件的源代码后,把他们放在projectsrc文件夹下的android.pm包下,自己建包。
首先要获得系统中已经装了的apk,apk分为两类第一是系统的apk,第二是第三方的apk,所以在获取apk时能够指定一个过滤器,见例如以下代码:
java代码
AppInfo是我自定义的一个类,里面包括了应用程序的包名、数据区大小、代码区大小、等等一些属性。
好,如今我们来获取app包的数据区大小、缓存区大小、代码区大小,这里要用反射的机制去获取PackageManager类的隐藏方法getPackageSizeInfo(),这种方法的详细实现是通过回调函数来实现的,这里要用到IPackageStatsObserver这个类生成的桩。
java代码
或得到app的大小数据后,封装成消息发送出去,这是最好的方法!!
这里也介绍一个将long型数据转换成文件大小格式的数据。
java代码
好,如今我们来清除用户数据,这里要用到之前下载的那个文件IPackageDataObserver,跟获取app大小一样的,通过回调来实现。
java代码
好,如今到卸载程序的时候了,看代码
java代码
关于apk的管理就差点儿相同了,如今来看看正在执行的服务的管理
首先,获取正在执行的服务:
这里我的RunningInfo是我自定义的一个类,主要服务的一些属性,比方包名、uid、pid等等那些
java代码
好,获取到了正在执行的服务之后,就能够任意停止服务了,停止服务的代码是:
java代码
相同也是用反射的机制来得到隐藏类。
到这里,应用程序管理的功能就差点儿相同了,
剩下就仅仅是界面上的事情和程序的处理流程上的事情,应该还好!
浙公网安备 33010602011771号