如何在Java中没有系统权限的情况下在每个应用程序启动时以编程方式清除应用程序缓存?

问题描述 投票:0回答:1

我正在开发一个 Android 应用程序,每次应用程序启动时我都需要清除应用程序的缓存。我目前正在使用此代码来尝试删除缓存:

File dir = new File(cacheFilePath);
if (dir isDirectory()){
    File[] files = dir.listFiles();
    if (files != null){
        for (File file : files){
            deleteRecursive(file);
        }
    }
}

private static void deleteRecursive(File file) {
    if (file.isDirectory()){
        File[] files = file.listFiles();
        if (files != null){
            for (File child : files){
                deleteRecursive(child);
            }
        }
    }
    file.delete();
}

但是,除非我尝试将这些权限添加到 Android 清单中,否则此代码不会正确清除缓存:

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

但我收到一条潜在警告,称这些权限仅授予系统应用程序。

权限仅授予系统应用程序。检查信息:具有保护级别签名、特权或签名或系统的权限仅授予系统应用程序,如果应用程序是常规非系统应用程序,则永远无法使用这些权限.

如何以编程方式清除应用程序的缓存而不需要系统权限?

此外,如果我尝试使用这些权限在 Play 商店上发布此应用程序,审核团队是否会因为这两个权限而拒绝该应用程序?是否有任何替代方案或最佳实践来处理此问题?

android caching google-play android-manifest android-permissions
1个回答
0
投票

由于它是您的应用程序,您试图清除,因此不需要任何权限即可执行此操作,只需使用

context.cacheDir
获取缓存文件夹,然后浏览文件并删除它们,就像处理任何其他文件一样。

当设备存储空间不足时,缓存目录也会自动删除其文件

© www.soinside.com 2019 - 2024. All rights reserved.