Отражение методов для очистки кэша Android-приложений
Я пытаюсь очистить кеш приложений других приложений для Android, кроме моего собственного. Для этого я использую отражение в классе PackageManager. Однако всякий раз, когда я инициализирую метод перед его вызовом, он всегда оказывается нулевым.
private void initiateClearUserData() {
// Invoke uninstall or clear user data based on sysPackage
String thePackageName;
PackageManager pm = speedy.this.getPackageManager();
List<ApplicationInfo> 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, появляется мое сообщение с тостом. Какие-либо предложения?
1 ответ
Посмотрите документы по безопасности на Android: http://developer.android.com/guide/topics/security/security.html
Центральным аспектом архитектуры безопасности Android является то, что ни одно приложение по умолчанию не имеет разрешения на выполнение каких-либо операций, которые могут негативно повлиять на другие приложения, операционную систему или пользователя. Это включает чтение или запись личных данных пользователя (таких как контакты или электронные письма), чтение или запись файлов другого приложения, доступ к сети, поддержание устройства в активном состоянии и т. Д.
Похоже, система заблокирует вас от этого (через отражение тоже).