Ich erreichte dies durch einen kleinen Hack. Zuerst habe ich eine gefälschte 1x1-Symboldatei erstellt und im Ordner "Assets" gespeichert. Dann überwog ich WebViewClient's shouldInterceptRequest() Methode, wo ich die URL prüfen, ob er die Anforderung für Favicon-Datei ist und in dieser Fall Rückkehr WebResourceResponse mit Input, die unser gefälschten Symbol enthält:
@Override
@CallSuper
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
if(!request.isForMainFrame() && request.getUrl().getPath().equals("/favicon.ico")) {
try {
return new WebResourceResponse("image/png", null, new BufferedInputStream(view.getContext().getAssets().open("empty_favicon.ico")));
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
Beachten Sie, dass die Input darf nicht in unserem geschlossen werden Code, weil er anschließend vom WebView zum Lesen des Icons verwendet wird. Das WebviewClient muss über seine Setter auf die WebView eingestellt werden:
mWebView.setWebViewClient(subclassedWebViewClient);
Dies funktioniert nicht, das Verfahren ist synchron und kehrt nur noch Favicon der Bitmap zwischengespeichert. –