このコードは、デバイスの設定/アプリ/アプリ メニューからキャッシュをクリアするまで完全に機能します。
/**
* @param context te get packageName & {@code cacheDir} from internal storage
* @return file for {@code cacheDir} either SD card or internal storage. Or {@code null} if cacheDir doesn't exist
*/
public static File getCacheDir(Context context) throws IOException {
File cacheDir;
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
String cacheDirPath = getApplicationCacheDirPath(context.getPackageName());
cacheDir = new File(Environment.getExternalStorageDirectory() + File.separator + cacheDirPath);
} else {
cacheDir = context.getCacheDir();
}
if (cacheDir != null && !cacheDir.exists()) {
if (!cacheDir.mkdirs()) {
throw new IOException("Can't use cacheDir");
}
}
return cacheDir;
}
回避策として、このファイルを削除して再度作成し、他の(システム)アプリによるロックを解除しようとしましたが、それも失敗しました。デバイスの再起動のみがその問題を解決します。どんな助けでも大歓迎です。ありがとうございました!