faviconsはHttpClientを使用しています。電話番号:
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.StatusLine;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
..........
ArrayList<String> list; //list of target urls
HttpClient httpclient = new DefaultHttpClient();
final int size = list.size();
for (int i = 0; i < size; ++i) {
try {
String pure_url = extractPureUrl(url);
HttpResponse response = httpclient.execute(new HttpGet(pure_url + "/favicon.ico"));
if (response.getEntity() != null) {
StatusLine statusLine = response.getStatusLine();
if (statusLine.getStatusCode() == HttpStatus.SC_OK) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
response.getEntity().writeTo(out);
out.close();
byte[] image_bytes = out.toByteArray();
bmp = BitmapFactory.decodeStream(new ByteArrayInputStream(image_bytes));
if (bmp != null) {
//do smth with received bitmap
}
} else {
response.getEntity().consumeContent();
}
}
} catch (ClientProtocolException e) {
//log error
} catch (IOException e) {
//log error
}
}
private static final String EXTENDED_HTTP_PREFIX = "http://www.";
private static final String HTTP_PREFIX = "http://";
/** Converts http://abc.com/xxx and http://www.abc.com/xxx to http://abc.com */
private static String extractPureUrl(String srcUrl) {
String sw = srcUrl.toLowerCase();
String s = sw.startsWith(EXTENDED_HTTP_PREFIX)
? sw.substring(EXTENDED_HTTP_PREFIX.length())
: sw.startsWith(BookmarkInfo.HTTP_PREFIX)
? sw.substring(BookmarkInfo.HTTP_PREFIX.length())
: sw;
int n = s.indexOf('/');
if (n == -1) return srcUrl;
return HTTP_PREFIX + s.substring(0, n);
}
ここには、ico format is not supported officially by Androidという潜在的な問題があります。実際には、BitmapFactoryはほとんどのデバイスでicoフォーマットを問題なくデコードします。とにかく、私はそれがすべてのデバイスabsのicoをデコードすることはわかりません。
ありがとうございますが、それは私が意味するものではありません。ユーザーがブラウザを使用してこのURLに移動する前にブックマークサムネイルを取得したいと思います。つまり、このページへのリクエストをシミュレートし、生成されたサムネイルを取得する必要があります。 (例は、LauncherPro支払い、ブックマークウィジェット設定で見つけることができます)。 –
私は言ったように、おそらく十分ではありません... android.webkit.WebView.capturePictureメソッド[http://developer.android.com/reference/android/webkit/WebView.html#capturePicture() ] – amb
おかげさまで私はそれを調べます! –