前言
最近公司有对安装好的应用的数据要求进行清理数据缓存需求,也就查找相关资料实现了,清除自身的缓存简单,但是要是想清除其他第三方应用这个就要消耗点精力了,因为android将clearApplicationUserData该接口给隐藏掉了,这只能通过反射来获取相关方法来实现。不多说,直接上代码。
代码
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
try {
Class<?> amClass = Class.forName(am.getClass().getName());
Method clearApp = amClass.getMethod("clearApplicationUserData", String.class, IPackageDataObserver.class);
Log.d("MainActivity", "clearApp: " + clearApp.getName());
clearApp.invoke(am, packageName, new IPackageDataObserver() {
@Override
public IBinder asBinder() {
return null;
}
@Override
public void onRemoveCompleted(String packageName, boolean succeeded) throws RemoteExcepti