Android使用URL访问网络资源

    当我们的安卓应用需要用到的图片是网上的资源的时候可以通过使用URL打开流和图片资源的连接

在xml文件中定义一个ImageView用于放图片

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     android:layout_width="match_parent"
 3     android:layout_height="match_parent"
 4     android:orientation="vertical"
 5     >
 6 
 7     <ImageView
 8         android:id="@+id/show"
 9         android:layout_width="wrap_content"
10         android:layout_height="wrap_content" />
11 
12 </LinearLayout>

在Activity中访问网络资源,并且和自定义的输入流连接获取图片

 1 package com.contentprovide.liuliu.url_demo;
 2 
 3 import android.graphics.Bitmap;
 4 import android.graphics.BitmapFactory;
 5 import android.os.Handler;
 6 import android.os.Message;
 7 import android.support.v7.app.AppCompatActivity;
 8 import android.os.Bundle;
 9 import android.widget.Button;
10 import android.widget.ImageView;
11 
12 import java.io.IOException;
13 import java.io.InputStream;
14 import java.net.MalformedURLException;
15 import java.net.URL;
16 
17 public class MainActivity extends AppCompatActivity {
18     ImageView show;
19     Bitmap bitmap;//得到获取的图片
20     Handler handler = new Handler(){
21         @Override
22         public void handleMessage(Message msg) {
23             super.handleMessage(msg);
24             show.setImageBitmap(bitmap);
25         }
26     };
27 
28     Thread thread = new Thread(){
29         @Override
30         public void run() {
31             super.run();
32             try {
URL中放的是图片的地址,图片地址随便在网上找一张图片,右键图片就可以复制了,这里需要捕捉异常
33 URL url = new URL("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1513089945188&di=12fd9cbe927799bda7d84d04acdd70f8&imgtype=0&src=http%3A%2F%2Fimage.tianjimedia.com%2FuploadImages%2F2015%2F131%2F42%2F1Q177R2I7739.jpg"); 34 35 InputStream inputStream = url.openStream(); 36 bitmap = BitmapFactory.decodeStream(inputStream); 37 handler.sendEmptyMessage(1);//主线程中是不能更新的,所以得发送消息到handler,到handleMessage方法中设置获取得到的图片 38           inputStrem.close; 39 } catch (MalformedURLException e) { 40 e.printStackTrace(); 41 } catch (IOException e) { 42 e.printStackTrace(); 43 } 44 } 45 }; 46 47 @Override 48 protected void onCreate(Bundle savedInstanceState) { 49 super.onCreate(savedInstanceState); 50 setContentView(R.layout.activity_main); 51 show = (ImageView) findViewById(R.id.show); 52 thread.start();//让线程开始执行 53 54 55 } 56 57 58 59 }

使用网络资源时需要设置权限:

打开AndroidMenifest.xml文件在

<application></application>之外设置权限,添加
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
原文地址:https://www.cnblogs.com/lyd447113735/p/8029606.html