context
, который вы используете для нахождения WebView
ссылки по findViewById
- это context
из Receiver
, а не context
из Activity
, поэтому он не может получить доступ к WebView
Существует множество возможностей:
Решение 1
Вы можете использовать LocalBroadcastReceiver
для связи с действием, которое содержит ссылку на ваш WebView
,оттуда вы можете правильно очистить кеш, как вы пытались сделать в приемнике.mWebview.clearCache(true);
Решение 2
В onReceive
вашего BroadcastReceiver вы можете сохранить предпочтение в SharedPreferences
, сообщая, что произошло обновление.
@Override
public void onReceive(Context con, Intent intent)
{
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences();
prefs.edit().putBoolean("hasAppUpdated", true).apply();
}
И затем в вашем Activity
, который имеет дело с WebView
, вы можете проверить, было ли обновление приложения, и очистить кэш WebView
.
. Чтобы получить доступ к значению из SharedPreferences
:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences();
Boolean hasAppUpdated = prefs.getBoolean("hasAppUpdated", false);
if(hasAppUpdated) {
prefs.edit().putBoolean("hasAppUpdated", false).apply();
mWebview.clearCache(true);
}
Значение false
является значением по умолчанию для hasAppUpdated
, и после получения значения из предпочтений вы можете захотеть снова вернуть предпочтение в значение false.
Уродливое решение
Еще один способ сделать это может быть этот уродливый взлом, который я не рекомендую .Я не проверял это, но если вы используете WebView
, тогда в папке кэша вашего приложения, вероятно, есть папка org.chromium.android_webview
(для версий ниже API 19 это может быть не так, поскольку WebView
тогда не использовалchromium), и внутри этой папки у вас есть кэш WebView
, поэтому, если вы удалите файлы внутри этой папки с помощью java.io.File
API, вы, вероятно, решите свою проблему, не обращаясь к WebView
.Помните, что это очень уродливое решение (если оно даже работает) и далеко не пуленепробиваемое решение.
![enter image description here](https://i.stack.imgur.com/aYhjN.png)