標籤:
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.Menu;
import android.widget.ImageView;
public class URLTest extends Activity {
ImageView show;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_urltest);
show = (ImageView) findViewById(R.id.show);
//定義一個URL對象
try {
URL url = new URL("http://www.crazyit.org/attachments" +
"month_1008/20100812_7763e970f822325bf019ELVym8tW3A.png");
//開啟該URL對應的資源的輸入資料流
InputStream is = url.openStream();
//從InputStream中解析出圖片
Bitmap bitmap = BitmapFactory.decodeStream(is);
//使用ImageView顯示該圖片
show.setImageBitmap(bitmap);
is.close();
//再次開啟URL對應的資源的輸入資料流
is = url.openStream();
//開啟手機檔案對應的輸出資料流
OutputStream os = openFileOutput("crazyit.png", MODE_WORLD_READABLE);
byte[] buff = new byte[1024];
int hasRead = 0;
//將URL對應的資源下載到本地
while((hasRead = is.read(buff)) > 0){
os.write(buff, 0, hasRead);
}
is.close();
os.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
上面的程式兩次調用了URL對象的openStream()方法開啟URL對應的資源的輸入資料流,程式第一次使用BitmapFactory的decodeStream(InputStream)方法來解析該輸入資料流中的圖片;第二次則使用IO將輸入資料流中的圖片下載到本地。
該程式同樣需要訪問互連網,因此需要授予該程式訪問網路的許可權,也就是需要在AndroidManifest.xml檔案中增加如下授權碼。
<!-- 授權訪問網路 -->
<uses-permission android:name="android.permission.INTERNET"/>
運行該程式不僅可以顯示該URL對象所對應的圖片,而且還會在手機檔案系統的/data/data/org.crazyit.net/files/目錄下產生crazyit.png圖片,該圖片就是通過URL從網路上下載的圖片。
使用URL讀取網路資源