Я пытаюсь разработать приложение для Android, которое может стереть другие данные кэша приложений. Я попытался просмотреть все блоги, но никто из них не работал для меня. Я могу очистить кэш-память приложения с помощью следующего кода
Как очистить кэш других приложений от другого приложения Android в Marshmallow?
Ссылка:
How to delete other applications cache from our android app?
private static final long CACHE_APP = Long.MAX_VALUE;
private CachePackageDataObserver mClearCacheObserver;
btnCache.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
clearCache();
}
});//End of btnCache Anonymous class
void clearCache()
{
if (mClearCacheObserver == null)
{
mClearCacheObserver=new CachePackageDataObserver();
}
PackageManager mPM=getPackageManager();
@SuppressWarnings("rawtypes")
final Class[] classes= { Long.TYPE, IPackageDataObserver.class };
Long localLong=Long.valueOf(CACHE_APP);
try
{
Method localMethod=
mPM.getClass().getMethod("freeStorageAndNotify", classes);
/*
* Start of inner try-catch block
*/
try
{
localMethod.invoke(mPM, localLong, 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();
}
/*
* End of inner try-catch block
*/
}
catch (NoSuchMethodException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
}
}//End of clearCache() method
private class CachePackageDataObserver extends IPackageDataObserver.Stub
{
public void onRemoveCompleted(String packageName, boolean succeeded)
{
}//End of onRemoveCompleted() method
}//End of CachePackageDataObserver instance inner class
А также создать пакет в папку Src с именем android.content.pm
внутри этого пакета создания файл в имени IPackageDataObserver
.aidl и вставьте сюда следующий код
package android.content.pm;
/**
* API for package data change related callbacks from the Package Manager.
* Some usage scenarios include deletion of cache directory, generate
* statistics related to code, data, cache usage(TODO)
* {@hide}
*/
oneway interface IPackageDataObserver {
void onRemoveCompleted(in String packageName, boolean succeeded);
}
и в своем манифесте убедитесь, что вы использовали следующий код
<uses-permission android:name="android.permission.CLEAR_APP_CACHE"/>
Выше коды успешно расчищенные до леденца, но когда этот код выполнить в Marshamallow, то не ясно, все данные. Почему это делает ??????????????
Любые предложения будут приниматься. или другой способ решения. Благодарю.
У меня такая же проблема. Если вы найдете какое-либо решение, поделитесь со мной –