Android 获取另一个应用程序的缓存目录

Android 获取另一个应用程序的缓存目录,android,Android,我正在开发一个Android应用程序,其中列出了所有应用程序的路径和缓存目录的大小。 我已经写了一些代码,但现在它崩溃了,我不知道出了什么问题 Context context = createPackageContext(p.applicationInfo.packageName, Context.CONTEXT_INCLUDE_CODE); items.add(p.applicationInfo.loadLabel(getPackageManager()).toString() + ": "

我正在开发一个Android应用程序,其中列出了所有应用程序的路径和缓存目录的大小。 我已经写了一些代码,但现在它崩溃了,我不知道出了什么问题

Context context = createPackageContext(p.applicationInfo.packageName, Context.CONTEXT_INCLUDE_CODE);
items.add(p.applicationInfo.loadLabel(getPackageManager()).toString() + ": " + context.getCacheDir().getName());
p是文件的PackageInfo,items是ArrayList。 NullPointerException导致崩溃。 我希望有人能帮助我

编辑: 这是日志:

12-15 02:34:14.507: W/dalvikvm(10789): threadid=1: thread exiting with uncaught exception (group=0x40e34300)
12-15 02:34:14.511: E/AndroidRuntime(10789): FATAL EXCEPTION: main
12-15 02:34:14.511: E/AndroidRuntime(10789): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.alexnavratil.test/com.alexnavratil.test.MainActivity}: java.lang.SecurityException: Requesting code from app.test.com (with uid 10075) to be run in process com.alexnavratil.test (with uid 10104)

我希望这足够了。完整的日志很长。

通常其他应用程序的数据目录都受到android操作系统的保护。 如果允许无根安卓应用读取其他应用的应用缓存,我就不是舒尔


要清除应用程序缓存,有manifest权限和

,但play store中有一些缓存清理器,它们还可以访问缓存目录。我想删除每个已安装应用(系统应用除外)的缓存,但如何删除?我已经设置了此权限。我认为它崩溃了,因为我无法在我的应用程序中运行应用程序。我认为这是错误的代码,但我不知道如何获取缓存目录。但我认为这只是Android/数据//缓存。我将尝试此方法。答案是给你的-你正在尝试运行一个安装的应用程序,该应用程序的用户id与你自己的应用程序不同,因此崩溃!如果您是根用户,并调用
su
它可能会工作。。但是作为普通的非root用户-恐怕。。。