无需root,清除清理安卓,android的cache,缓存
2012-11-09 13:47
134 查看
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.需要权限 <uses-permission android:name="android.permission.CLEAR_APP_CACHE" /> */ 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);
}
相关文章推荐
- 无需root,清除清理安卓,android的cache,缓存
- 无需root,清除清理安卓,android的cache,缓存
- 无需root,清除清理安卓,android应用的缓存
- 无需root,清除清理安卓,android的c…
- android 清除缓存cache
- 安卓应用清除缓存一般清理目录和代码(带弹框)
- 【Android】Picasso加载本地图片如何清理缓存cache?
- Android清除webview缓存
- Android获取缓存大小和清除缓存功能
- linux下的缓存机制及清理buffer/cache/swap的方法梳理 【转】
- android 读取WebView缓存及清理WebView缓存
- Android开发——获取应用数据/缓存大小并清理缓存
- nginx 反向代理,动静态请求分离,proxy_cache缓存及缓存清除
- android清除缓存为什么总是存在12k?
- 【Android开源项目分析】android轻量级开源缓存框架——ASimpleCache(ACache)源码分析
- Android清除本地数据缓存代码案例
- Vysor – 无需 root,用 Chrome 完全控制 Android 设备
- Android清除本地数据缓存代码
- Android Webview清除缓存和Cookie
- Nginx 负载均衡的Cache缓存批量清理的操作记录