2

私はこの辺りで別のアプリケーションのcahce-memoryのクリーニングについて読んでおり、自分のアプリのコーディングも試みました。私が得た結果は、Androidの現在のセキュリティレイヤーでは不可能であるということです。

しかし、現在、市場(Google Play)には多くのキャッシュクリーナーアプリケーションがありますか?

許可したアプリケーションを起動するとandroid.permission.DELETE_CACHE_FILES、LogCatが印刷されました

Not granting permission android.permission.DELETE_CACHE_FILES to package <MY_PACKAGE_NAME> (protectionLevel=3 flags=0x8be46)

調査の結果、3:サードパーティのアプリには権限が付与されないことがわかりました。protectionLevel=3別のアプリケーションキャッシュを(論理的に)削除しようとすると、java.lang.SecurityExceptionが発生します。

私の質問はそのためです:「GooglePlay上のこれらのアプリケーションはどのように許可され、他のアプリケーションキャッシュを削除することができますか?」

ネイティブスピーカーではなく、私の英語が下手でごめんなさい

4

3 に答える 3

4

これを行うことができるのは、デバイスがルート化されており、アプリケーションにスーパーユーザー権限がある場合のみです。

于 2012-12-27T00:19:02.093 に答える
0

これらのアプリがこれをどのように実現するかをお話ししましょう。

デフォルトでユーザーに提供されるものもandroid classes have methodsあります。それらに直接アクセスすることはできませprivate(@hidden)ん。しかし、を使用するためのより良いアプローチがあります。Reflection

権限を追加します。

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

そして、これらの答えに従ってください

https://stackoverflow.com/a/17334600/3496570

https://stackoverflow.com/a/14509140/3496570

packageまた、名前を作成し、 IPackageDataObserver.aidlをパッケージandroid.content.pmに追加することを忘れないでください。その後、あなたは行ってもいいです。

于 2015-03-30T08:32:17.700 に答える
0

Android 11以降では、ACTION_CLEAR_APP_CACHEを使用できます。このアクションはアプリのキャッシュを自動的にクリアしませんが、システムダイアログを表示し、ユーザーが決定できるようにします。

また、MANAGE_EXTERNAL_STORAGE権限が必要です。ドキュメントを確認してください。

使用法:

Androidマニフェスト:

<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
    android:minSdkVersion="30"
    tools:ignore="ScopedStorage" />

すべてのキャッシュをクリーンアップします。

//Get the cache dialog
int requestCode = 999;
Intent intent = new Intent(StorageManager.ACTION_CLEAR_APP_CACHE);
activity.startActivityForResult(intent, requestCode);
于 2021-10-03T10:28:59.080 に答える