解决方案 »

  1.   

    有root权限的话,直接去其他应用程序的缓存文件夹清空吧
      

  2.   


    给手机弄了个360root可以删了,但是还是有疑问。网上介绍了两种方法,一个是有root和没有root的,我采用的还是没有root的方法,却删除成功,难道是网上的这段代码的实现其实还是需要获得root权限么?
    另外一种是不用权限;一键清理:
    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;
          }
        }PackageManager pm = activity.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 {
           // TODO Auto-generated method stub
    }});
    权限:<uses-permission android:name="android.permission.CLEAR_APP_CACHE" />但为什么360的安全卫士在没有root权限却可以进行清理呢?
      

  3.   

    第一,有root权限可以直接清除,
    第二,360 是假清理,它清理不了 单个程序的缓存,
       要先清理缓存,只用一种办法(没有权限) 就是清除所有程序的缓存,
     这是用的Android的一个BUG,就是你得程序去申请很大的内存,比如直接申请10G,但是你得内存总共才1G,这时候系统为了满足你得要求,会去全盘清理缓存,清理完了发现还是达不到你得要求,那么就返回失败!!!! 但是,我们的目的已经达成,就是要让他去清理全盘缓存