android程式碼獲取網站圖示
阿新 • • 發佈:2019-01-05
網站上的圖示的獲取,如百度的圖示 的獲取是在網站後面新增 /favicon.ico,如 http://www.baidu.com/favicon.ico 。
在android中獲取網路上的圖片並存儲到本地,或者置於ImageView元件中.以下為獲取URL上的圖示並設定到ImageView的工具方法:
public static void getBitmapFromURL(final String url, final ImageView imageView, final Handler handler){
new Thread(new Runnable() {
@Override
public void run() {
try {
URL httpURL = new URL(url);
HttpURLConnection conn = (HttpURLConnection) httpURL.openConnection();
conn.setReadTimeout(5000);
conn.setRequestMethod("GET");
conn.setDoInput(true );
InputStream in = conn.getInputStream(); // 獲取輸入流
FileOutputStream out = null; // 輸出流
File file = null; // 從URL下載的檔案
String fileName = url.replace("/", "").replace(":", "").replace("&", ""); // 用URL作為檔名,將其中的特殊字元去除
// 判斷 SD卡是否存在
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
File dir= Environment.getExternalStorageDirectory(); // 獲取資料夾路徑
file = new File(dir, fileName); // 獲取到檔案
out = new FileOutputStream(file); // 將檔案寫到本地儲存
}
byte[] b = new byte[1024]; // 設定緩衝區大小
int length;
if(out != null) {
while((length = in.read(b)) != -1) {
out.write(b, 0, length); // 寫入本地儲存卡中
}
}
final Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath()); // 獲取檔案所在的位置
handler.post(new Runnable() {
@Override
public void run() {
imageView.setImageBitmap(bitmap);
}
});
file.delete(); // 置於ImageView元件後,將SD卡上的圖示檔案刪除
in.close();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}