Я пытаюсь получить фавиконки в URL пользователь вводит, напримерHttpURLConnection - "https: //" против "HTTP: //"
_url = "google.com";
Я использую HttpURLConnection, чтобы получить Bitmap от значка от расширения /favicon.ico
от URL-адреса хоста.
String faviconString = Uri.parse(_url).getHost() + "/favicon.ico";
URL faviconUrl = null;
Bitmap favicon = null;
try
{
faviconString = "http://" + faviconString;
faviconUrl = new URL(faviconString);
HttpURLConnection connection = (HttpURLConnection) faviconUrl.openConnection();
connection.setDoInput(true);
connection.connect();
favicon = BitmapFactory.decodeStream(connection.getInputStream());
}
catch (IOException e)
{
e.printStackTrace();
}
return favicon;
Однако, так как пользователь, вероятно, не будет указывать http://
или https://
, я бы добавить сам. Проблема, с которой я столкнулась, заключается в том, что если я добавлю http://
перед адресом, все будет работать нормально, но для https://
некоторые сайты вернут значок, другие просто дадут мне нуль. Как узнать, какая страница использует https
? Должен ли я просто добавить http://
для каждого случая? Существуют ли какие-либо веб-сайты, которые ограничивают строго https
и возвращают значение null для использования http
?
Это не очень надежный метод, так как значки могут быть определены внутри страницы, как это '<ссылка отн =«ярлык»HREF ="/a/different/path.ico "type =" image/x-icon "/>' – Emiel
Есть ли другие способы предложить? 'WebIconDatabase' и' WebView.getFavicon() 'были бы идеальны, но' WebIconDatabase' устарел –
Извините, что я не знаком с Android, но это звучит неплохо. – Emiel