反射调用系统隐藏接口,需要准备的东西:

一、在AndroidManifest.xml中的manifest标签下添加声明

android:sharedUserId="android.uid.system"

二、添加如下权限

 <uses-permission android:name="android.permission.DELETE_CACHE_FILES"/>
 <uses-permission android:name="android.permission.ACCESS_INSTANT_APPS"/>
 <uses-permission android:name="android.permission.CLEAR_APP_USER_DATA"/>
 <uses-permission android:name="android.permission.CLEAR_APP_CACHE" />

三、使用系统签名给app进行签名

找到platform.pk8和platform.x509.pem和apksigner.jar三个文件,网上搜索制作系统签名文件的命令

最终生成plateform.keystore签名文件(附上某网盘制作好的系统签名,链接: https://pan.baidu.com/s/11dir8rTC_GxSGuG5El0nMg 提取码: ed33 )

四、创建 android.content.pm.IPackageDataObserver的aidl接口

// IPackageDataObserver.aidl
package android.content.pm;
interface IPackageDataObserver {
void onRemoveCompleted(in String packageName, boolean succeeded);

五、实现aidl接口回调监听

经过验证总结,得出如下结论:

1、清除缓存

反射调用接口:PackageManager.deleteApplicationCacheFiles

它会清除以下项目:

A)清除data/data/{package_name}/cache/下的所有文件

B)清除data/data/{package_name}/code_cache/下的所有文件

C)清除mnt/sdcard/Android/data/{package_name}/下的cache文件夹

2、清除数据:

反射调用接口:ActivityManager.clearApplicationUserData

它会清除以下项目:

A)清除data/data/{package_name}/下的所有文件和文件夹(包括lib文件夹,PS:网上有人说lib文件夹和里面的内容不会被清除,经过验证,实际上也会清除)

B)清除mnt/sdcard/Android/data/下当前包名的文件夹

C)清除mnt/sdcard/Android/media/下当前包名的文件夹

D)清除{package_name}对应的app所有运行时权限的授权

E)清除所有通知,和该应用相关的所有URI授权(此项目为接口描述内容,未实际验证)

#但不会清除mnt/sdcard/Android/obb/{package_name}/下的内容

3、清除所有:

反射调用接口:PackageManager.freeStorageAndNotify

回调清除失败,不能清除任何数据。

/mnt/sdcard/ = /storage/emulated/0/

/data/data/ = /data/user/0/

接口返回的目录具体地址:

getCacheDir=/data/user/0/{package_name}/cache

getFilesDir=/data/user/0/{package_name}/files

getDataDir=/data/user/0/{package_name}

getCodeCacheDir=/data/user/0/{package_name}/code_cache

getDir(“abcd”)=/data/user/0/{package_name}/app_abcd

getObbDir=/storage/emulated/0/Android/obb/{package_name}

getExternalCacheDir=/storage/emulated/0/Android/data/{package_name}/cache

getExternalFilesDir(“acbd”)=/storage/emulated/0/Android/data/{package_name}/files/abcd

getExternalMediaDirs[0]=/storage/emulated/0/Android/media/{package_name}

清除数据和清除缓存的区别反射调用系统隐藏接口,需要准备的东西:一、在AndroidManifest.xml中的manifest标签下添加声明android:sharedUserId=&quot;android.uid.system&quot;二、添加如下权限 &amp;lt;uses-permission android:name=&quot;android.permission.DELETE_CACHE_FI...
SpringBoot项目启动失败报错Annotation-specified bean name ‘xx‘ for bean class [xxx] conflicts with existing
问题描述:项目启动就会报:Annotation-specified bean name ‘xx’ for bean class [xxx] conflicts with existing, non-compatible bean definition of same name and class[xxx] 解决方法:首先查找代码相同类名的类,发现并没有重复的,但是项目启动就会报上面的错误; 后来想起来,项目编译后会修改target的内容,如果只删除了代码的java类,而没有删除target的cla
使用ActivityManager的clearApplicationUserData方法,代码如下: ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); am.clearApplicationUserData(); 这种方式的问题就是不知清除cache,连带应用的data也删除了。如下图所示: 使用PackageManager的deleteApplicationCacheF 在总篇提到过垃圾清理,本篇将着重介绍针对缓存、卸载残留、无用数据等“静态内容”的清理,有关于系统进程的清理以及手机加速的相关功能,将放到《手机加速篇》介绍研究。 什么是垃圾 关于系统垃圾的定义 现在很多手机管理软件都有垃圾清理的功能,本篇也来对垃圾清理做一个简单的分析和介绍。在正式分析之前,让我们首先看一下“什么叫系统垃圾?”。在百度本科,关于“系统垃圾”是这样定义的:系统垃
这里说的清除是在软件清理其它程序的缓存,有两种。均用到反射这方面的知识,没办法,Android系统API把这些方法隐藏了。反射就不说了,不懂得可以自己百度,谷歌!   一种带root权限的: Class c1 = Class.forName("android.content.pm.IPackageDataObserver"); Method method = pm.getClass()
Android Permission大全出自1.0 SDK记录着新改变的访问权限许可。程序执行需要读取到安全敏感项必需在androidmanifest.xml声明相关权限请求,Android开发网已经翻译并使用英文对照,完整列表如下:   android.permission.ACCESS_CHECKIN_PROPERTIES允许读写访问"properties"表在checkin数据...
File file1 = getCacheDir(); File file2 = getFilesDir(); File[] files = new File[] { file1, file2 }; for (File file : files) {
最近在编写Python脚本过程遇到一个问题比较奇怪:Python脚本正常的,但执行报错”AttributeError: ‘module’ object has no attribute ‘xxx’”,其实是.pyc文件存在问题。 问题定位:查看import库的源文件,发现源文件存在且没有错误,同时存在源文件的.pyc文件。 问题解决方法:删除该库的.pyc文件,重新运行代码;或者找一个可以运...
import android.app.ActivityManager; import android.content.Context; import android.content.pm.IPackageDataObserver; import android.content.pm.PackageManager; import com