无需root,清除清理安卓,android的cache,缓存
- package com.agj.test;
- import java.io.File;
- import java.lang.reflect.Method;
- import android.content.Context;
- import android.content.pm.IPackageDataObserver;
- import android.content.pm.PackageManager;
- import android.os.Environment;
- import android.os.RemoteException;
- import android.os.StatFs;
- /**
- * 1.功能相当于,点击了 应用程序信息 里面的 清楚缓存按钮,而非 清除数据
- *
- * 2.功能相当于,删除了/data/data/packageName/cache 文件夹里面所有的东西
- *
- * 3.需要权限
- */
- public class CacheClearHelper {
- public static void clearCache(Context context) {
- try {
- PackageManager packageManager = context.getPackageManager();
- Method localMethod = packageManager.getClass().getMethod("freeStorageAndNotify", Long.TYPE,
- IPackageDataObserver.class);
- Long localLong = Long.valueOf(getEnvironmentSize() - 1L);
- Object[] arrayOfObject = new Object[2];
- arrayOfObject[0] = localLong;
- localMethod.invoke(packageManager, localLong, new IPackageDataObserver.Stub() {
- @Override
- public void onRemoveCompleted(String packageName, boolean succeeded) throws RemoteException {
- }
- });
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- private static long getEnvironmentSize() {
- File localFile = Environment.getDataDirectory();
- long l1;
- if (localFile == null)
- l1 = 0L;
- while (true) {
- String str = localFile.getPath();
- StatFs localStatFs = new StatFs(str);
- long l2 = localStatFs.getBlockSize();
- l1 = localStatFs.getBlockCount() * l2;
- return l1;
- }
- }
- }
另外,IPackageDataObserver这个类找不到的话,那么就自己新建一个,建成如下的样子:
IPackageDataObserver.aidl的内容是:
/*
**
** Copyright 2007, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
** http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
package android.content.pm;
/**
* API for package data change related callbacks from the Package Manager.
* Some usage scenarios include deletion of cache directory, generate
* statistics related to code, data, cache usage(TODO)
* {@hide}
*/
oneway interface IPackageDataObserver {
void onRemoveCompleted(in String packageName, boolean succeeded);
}
更多相关文章
- Android(安卓)ListView长按Item功能
- 一个简单、漂亮、功能强大的Android日志程序:logger
- android 状态栏移动到底部
- android 应用中加入支付功能(支付宝集成)
- Android当中的SeekBar与iOS中的UISlider 功能一致
- android 换肤功能的实现
- 2013.03.19(3)———android ActivityGroup的一些问题
- Android:Gtalk(显示好友列表)
- Android(安卓)app编译依赖android.jar配置方法