安卓实现从互联网上获取图片并保存到本地目录中

因为是对互联网和内存操作,所以我们要添加如下权限:
<uses-permission android:name="android.permission.INTERNET"/> 

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

package com.itfom.getpicfromnet;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;

@SuppressLint("HandlerLeak")
public class MainActivity extends Activity {

	private ImageView iv_pic;
	private Button btn_get;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		btn_get = (Button) findViewById(R.id.btn_get);
		iv_pic = (ImageView) findViewById(R.id.iv_img);
		//设置监听事件
		btn_get.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				//开启子线程
				new Thread(){
					public void run() {
						try {
							String urlPath = "http://pic7.nipic.com/20100607/4791134_172835008083_2.jpg";
							URL url = new URL(urlPath);
							HttpURLConnection conn = (HttpURLConnection) url.openConnection();
							conn.setConnectTimeout(6*1000);  // 注意要设置超时,设置时间不要超过10秒,避免被android系统回收
							if (conn.getResponseCode() != 200) throw new RuntimeException("请求url失败");
							InputStream inSream = conn.getInputStream();
							//把图片保存到项目的根目录
							readAsFile(inSream, new File(Environment.getExternalStorageDirectory()+"/"+"test.jpg"));
							Message msg=new Message();
							msg.what=0;
							handler.sendMessage(msg);
						} catch (Exception e) {
							e.printStackTrace();
						}
					};
				}.start();
			}
		});
	}
	public static void readAsFile(InputStream inSream, File file) throws Exception{
		FileOutputStream outStream = new FileOutputStream(file);
		byte[] buffer = new byte[1024];
		int len = -1;
		while( (len = inSream.read(buffer)) != -1 ){
			outStream.write(buffer, 0, len);
		}
		outStream.close();
		inSream.close();
	}
	//创建Handler
	Handler handler=new Handler(){
		public void handleMessage(android.os.Message msg) {
			if(msg.what==0){
				//开始绑定数据
				iv_pic.setImageBitmap(BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+"/test.jpg"));
			}
		};
	};
}
运行结果如下所示:
 


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值