反映清除Android应用缓存的方法

我试图清除除我自己以外的其他Android应用程序的应用程序缓存。 为此,我在PackageManager类上使用reflection。 但是,每当我在调用它之前初始化该方法时,它总是最终为null。

private void initiateClearUserData() { // Invoke uninstall or clear user data based on sysPackage String thePackageName; PackageManager pm = speedy.this.getPackageManager(); List installedApps = pm.getInstalledApplications(0); ApplicationInfo ai;// = installedApps.get(0); ActivityManager.RunningAppProcessInfo process; for(int x=0; x<4; x++){ ai = installedApps.get(x); 

这是我的问题所在:

  thePackageName = ai.packageName.toString();// mAppEntry.info.packageName; Method deleteApplicationCacheFiles = null; mClearCacheObserver = new ClearCacheObserver(); try { deleteApplicationCacheFiles = pm.getClass().getMethod( "deleteApplicationCacheFiles", String.class, PackageManager.class); } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NoSuchMethodException e) { // TODO Auto-generated catch block e.printStackTrace(); } if(deleteApplicationCacheFiles!= null){ try { deleteApplicationCacheFiles.invoke(thePackageName, mClearCacheObserver); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } }else{ Toast.makeText(speedy.this, "Hell naw", Toast.LENGTH_SHORT).show(); } } } 

因为方法deleteApplicationCacheFiles为null,所以我的toast消息显示出来。 有什么建议么?

请查看Android版安全性文档: http : //developer.android.com/guide/topics/security/security.html

Android安全体系结构的核心设计点是,默认情况下,任何应用程序都无权执行任何会对其他应用程序,操作系统或用户产生负面影响的操作。 这包括读取或写入用户的私人数据(如联系人或电子邮件),读取或写入其他应用程序的文件,执行网络访问,保持设备唤醒等。

听起来系统会阻止你这样做(通过reflection)。