android - 安卓开发中如何在本程序中删除其他程序的外部缓存
阿神
阿神 2017-04-17 13:46:35
[Android讨论组]
阿神
阿神

闭关修行中......

全部回复(4)
PHP中文网
java            PackageManager pm = context.getPackageManager();
            Class[] arrayOfClass = new Class[2];
            Class localClass2 = Long.TYPE;
            arrayOfClass[0] = localClass2;
            arrayOfClass[1] = IPackageDataObserver.class;
            Method localMethod = pm.getClass().getMethod(
                    "freeStorageAndNotify", arrayOfClass);
            Long localLong = Long.valueOf(getEnvironmentSize() - 1L);
            Object[] arrayOfObject = new Object[2];
            arrayOfObject[0] = localLong;
            localMethod.invoke(pm, localLong, new IPackageDataObserver.Stub() {
                public void onRemoveCompleted(String packageName,
                        boolean succeeded) throws RemoteException {
                }
            });

关键代码在这里了,没别的,自己try,catch一下。
另外,这是清除所有程序的缓存的。若想清除指定应用缓存是必须root的,否则你就跳应用详情页让用户手动清除吧。

巴扎黑

你说的其他程序的外部缓存,是指Environment.getExternalStorageDirectory()目录下的吧?

大家讲道理

我觉得这是一件很恐怖的事情

阿神

你指的是删除其他应用的数据吗?如果是的话,先停止该应用,再删

    public void deleAppData(String packageName) {
        PackageManager packageManager = mContext.getPackageManager();
        packageManager.clearApplicationUserData(packageName, new IPackageDataObserver.Stub() {

            public void onRemoveCompleted(String arg0, boolean arg1)
                    throws RemoteException {

            }
        });
    }
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号