2016-04-28 8 views
2

私は他のアプリケーションのキャッシュデータを消去することができるアンドロイドアプリを開発しようとしています。私はすべてのブログを閲覧しようとしましたが、誰も私のために働いていませんでした。作成
How to delete other applications cache from our android app?
Marshmallowの別のアンドロイドアプリから他のアプリケーションキャッシュをクリアするには?

private static final long CACHE_APP = Long.MAX_VALUE; 
private CachePackageDataObserver mClearCacheObserver; 

btnCache.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      clearCache(); 
     } 
    });//End of btnCache Anonymous class 

void clearCache() 
{ 
    if (mClearCacheObserver == null) 
    { 
     mClearCacheObserver=new CachePackageDataObserver(); 
    } 

    PackageManager mPM=getPackageManager(); 

    @SuppressWarnings("rawtypes") 
    final Class[] classes= { Long.TYPE, IPackageDataObserver.class }; 

    Long localLong=Long.valueOf(CACHE_APP); 

    try 
    { 
     Method localMethod= 
      mPM.getClass().getMethod("freeStorageAndNotify", classes); 

     /* 
     * Start of inner try-catch block 
     */ 
     try 
     { 
     localMethod.invoke(mPM, localLong, mClearCacheObserver); 
     } 
     catch (IllegalArgumentException e) 
     { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     } 
     catch (IllegalAccessException e) 
     { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     } 
     catch (InvocationTargetException e) 
     { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     } 
     /* 
     * End of inner try-catch block 
     */ 
    } 
    catch (NoSuchMethodException e1) 
    { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } 
}//End of clearCache() method 

private class CachePackageDataObserver extends IPackageDataObserver.Stub 
{ 
    public void onRemoveCompleted(String packageName, boolean succeeded) 
    { 

    }//End of onRemoveCompleted() method 
}//End of CachePackageDataObserver instance inner class 


そしてまた、そのパッケージ内の名前android.content.pmであなたのsrcフォルダにパッケージを作成します。私は、次のコードで

リファレンスを自分のアプリケーションのキャッシュをクリアすることができていますIPackageDataObserver .aidlという名前のファイルを開き、次のコードを貼り付けます。

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); 
} 


とマニフェスト内に使用し、次のコードのコードの上

<uses-permission android:name="android.permission.CLEAR_APP_CACHE"/> 

が正常にロリポップが、このコードはMarshamallowで実行したときまでクリアし、それは、すべてのデータは明らかではないことを確認してください。それはなぜですか?????????????

すべての提案が受け入れられます。解決する別の方法です。ありがとう。

+0

私は同じ問題があります。解決策が見つかったら私と共有してください –

答えて

0

これは公式の方法ではないので、Googleはこのメソッドの署名レベルを署名システム@ Marshamallowに上げました。

関連する問題