安卓开发中如何在本程序中删除其他程序的外部缓存

拜托有知道的大神告诉我一下,急用

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 {

            }
        });
    }
  • 关于 android 和 speex
  • 今日头条的listview点击跳到另一个展示完整文章是怎么做出来的?
  • iOS、Android 之类的如何调试 Web APP
  • Ionic 2 应用在默认安卓 6.0 模拟器使用 ionic run android 时已停止运行
  • FrameLatout下的按钮无法响应事件。
  • 本机的android虚拟机跑不起android小项目
  • ListView嵌套GridView,每次list中item都要new一个GridView适配器,这样是不是太浪费了
  • FloatingActionButton 的弹出 Menu 是如何实现的?
  • android service已经启动,service没有被杀死,一直存在,可是却不工作了。
  • Viewpager中嵌套Fragment的一些问题。
  • jsonObject.has()是干嘛的?