Хотя это задавалось несколько раз, единственным вопросом, который действительно имеет отношение к моей проблеме, является это (Can I use shouldInterceptRequest to block a particular call in Android?), но он был задан более 3 лет назад и в итоге не получил никаких ответов.Предотвращение загрузки данных с использованием shouldInterceptRequest
Запрос, который я пытаюсь заблокировать, является POST-запросом, поэтому метод shouldOverrideUrlLoading не может его перехватить.
После нажатия кнопки веб-просмотр загружает URL-адрес, содержащий следующую строку: «androidBundleId _ ********».
Мне нужно блокировать этот запрос и перенаправляет пользователей на Play Store (но я знаю, как это сделать!)
Проблема заключается в том, что тип возвращаемого значения shouldInterceptRequest метода является WebResourceResponse(о, как я хочу, это было логично!). Поэтому я должен вернуть хотя бы пустой WebResourceResponse.
Я не хочу, поскольку все, что находится внутри WebResourceResponse, загружается в мое приложение. Я просто хочу, чтобы веб-просмотр перехватил запрос и заблокировал его.
Приложение должно показывать одну и ту же веб-страницу, никакие данные не должны загружаться, кроме намерений Play Store.
Я размещаю только соответствующую часть своего кода.
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
if(url.contains("androidBundleId_")){
String bundleID = url.substring(url.indexOf("androidBundleId_")+"androidBundleId".length()+1, url.length());
try {
getContext().startActivity(new Intent
(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + bundleID)));
} catch (android.content.ActivityNotFoundException anfe) {
getContext().startActivity(new Intent
(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + bundleID)));
}
// I'D LIKE TO RETURN NOTHING HERE !!!
}
return super.shouldInterceptRequest(view, url);
}
Я знаю, что эта подпись является устаревшим, но я строю приложение с minSdk 16, поэтому я могу использовать только этот, а не один прием запроса в качестве второго параметра.
У вас есть обходной путь? Обратите внимание, что я не могу изменить веб-страницу, содержащую кнопку.
Вы знаете, что эквивалентно классу 'WebResourceResponse'? Я имею в виду что-то, что работает как 'shouldInterceptRequest', но ничего не возвращает. Каково точное решение вашей проблемы? – soommy12
См. Этот ответ https://stackoverflow.com/a/48363886/5559741 – wajeeh