Android实现图片上传
16lz
2021-01-26
class
NormalLoadPictrue {
private
String uri;
private
ImageView imageView;
private
byte
[] picByte;
public
void
getPicture(String uri,ImageView imageView){
this
.uri = uri;
this
.imageView = imageView;
new
Thread(runnable).start();
}
@SuppressLint
(
"HandlerLeak"
)
Handler handle =
new
Handler(){
@Override
public
void
handleMessage(Message msg) {
super
.handleMessage(msg);
if
(msg.what ==
1
) {
if
(picByte !=
null
) {
Bitmap bitmap = BitmapFactory.decodeByteArray(picByte,
0
, picByte.length);
imageView.setImageBitmap(bitmap);
}
}
else
if
(msg.what ==
1
){
ToastUtil.show(
"图片下载失败!"
);
}
}
};
Runnable runnable =
new
Runnable() {
@Override
public
void
run() {
try
{
URL url =
new
URL(uri);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod(
"GET"
);
conn.setReadTimeout(
10000
);
if
(conn.getResponseCode() ==
200
) {
InputStream fis = conn.getInputStream();
ByteArrayOutputStream bos =
new
ByteArrayOutputStream();
byte
[] bytes =
new
byte
[
1024
];
int
length = -
1
;
while
((length = fis.read(bytes)) != -
1
) {
bos.write(bytes,
0
, length);
}
picByte = bos.toByteArray();
bos.close();
fis.close();
Message message =
new
Message();
message.what =
1
;
handle.sendMessage(message);
}
}
catch
(ConnectTimeoutException e) {
Message message =
new
Message();
message.what =
2
;
handle.sendMessage(message);
e.printStackTrace();
}
catch
(ClientProtocolException e) {
Message message =
new
Message();
message.what =
2
;
handle.sendMessage(message);
e.printStackTrace();
}
catch
(SocketTimeoutException e) {
Message message =
new
Message();
message.what =
2
;
handle.sendMessage(message);
e.printStackTrace();
}
catch
(UnsupportedEncodingException e) {
Message message =
new
Message();
message.what =
2
;
handle.sendMessage(message);
e.printStackTrace();
}
catch
(IOException e) {
Message message =
new
Message();
message.what =
2
;
handle.sendMessage(message);
e.printStackTrace();
}
catch
(Exception e) {
Message message =
new
Message();
message.what =
2
;
handle.sendMessage(message);
e.printStackTrace();
// TODO: handle exception
}
}
};
}
更多相关文章
- Android(安卓)APK安装常见错误
- Bmob中的几种查询方法
- Android中的数据库操作(保证线程安全)
- viewModel与recyclerView结合
- android > 获取当前位置
- Android(安卓)有时环信初始化失败,创建applocation失败
- 关于android编译失败的集中情况
- 解决S5pv210 adb push u-boot.bin /system 的失败问题
- 解决Android创建AVD失败