0

このコードは、デバイスの設定/アプリ/アプリ メニューからキャッシュをクリアするまで完全に機能します。

/**
 * @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;
}

回避策として、このファイルを削除して再度作成し、他の(システム)アプリによるロックを解除しようとしましたが、それも失敗しました。デバイスの再起動のみがその問題を解決します。どんな助けでも大歓迎です。ありがとうございました!

4

0 に答える 0