欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android使用URL讀取網(wǎng)絡(luò)資源的方法

 更新時(shí)間:2021年11月26日 11:11:20   作者:_彼岸雨敲窗_  
這篇文章主要為大家詳細(xì)介紹了Android使用URL讀取網(wǎng)絡(luò)資源的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

URL(Uniform Resource Locator)是統(tǒng)一資源定位器,它是對(duì)可以從互聯(lián)網(wǎng)上得到的資源的位置和訪問方法的一種簡(jiǎn)潔的表示,是互聯(lián)網(wǎng)上標(biāo)準(zhǔn)資源的地址?;ヂ?lián)網(wǎng)上的每個(gè)文件都有一個(gè)唯一的URL,它包含的信息指出文件的位置以及瀏覽器應(yīng)該怎么處理它。就通常情況而言,URL可以由協(xié)議名、主機(jī)、端口和資源組成。

URL類提供了多個(gè)構(gòu)造器用于創(chuàng)建URL對(duì)象,一旦獲得了URL對(duì)象之后,就可以調(diào)用如下常用方法來訪問該URL對(duì)應(yīng)的資源了。
->String getFile():獲取此URL的資源名;
->String getHost():獲取此URL的主機(jī)名;
->String getPath():獲取此URL的路徑部分;
->String getPort():獲取此URL的端口號(hào);
->String getProtocol():獲取此URL的協(xié)議名稱;
->String getQuery():獲取此URL的查詢字符串部分;
->URLConnection openConnection():返回一個(gè)URLConnection對(duì)象,它表示到URL所引用的遠(yuǎn)程對(duì)象的連接;
InputStream openStream():打開與此URL的連接,并返回一個(gè)用于讀取該URL資源的InputStream。

URL對(duì)象中前幾個(gè)方法都非常容易理解,而該對(duì)象提供的openStream()可以讀取該URL資源的InputStream,通過該方法可以非常方便地讀取遠(yuǎn)程資源。

下面的程序Demo示范了如何通過URL類讀取遠(yuǎn)程資源。

layout/activity_main.xml界面布局代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical">

  <ImageView
    android:id="@+id/show"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scaleType="fitCenter" />
</LinearLayout>

MainActivity.java邏輯代碼如下:

package com.fukaimei.urltest;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;

import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;

public class MainActivity extends AppCompatActivity {

  ImageView show;
  // 代表從網(wǎng)絡(luò)下載得到的圖片
  Bitmap bitmap;
  Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
      if (msg.what == 0x123) {
        // 使用ImageView顯示該圖片
        show.setImageBitmap(bitmap);
      }
    }
  };

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    show = (ImageView) findViewById(R.id.show);
    new Thread() {
      @Override
      public void run() {
        try {
          // 定義一個(gè)URL對(duì)象
          URL url = new URL("http://172.xx.xxx.xxx:8080/fukaimei/android_vs_ios.jpg");
          // 打開該URL對(duì)應(yīng)的資源的輸入流
          InputStream is = url.openStream();
          // 從InputStream中解析出圖片
          bitmap = BitmapFactory.decodeStream(is);
          // 發(fā)送消息,通知UI組件的資源的輸入流
          handler.sendEmptyMessage(0x123);
          is.close();
          // 再次打開URL對(duì)應(yīng)的資源的輸入流
          is = url.openStream();
          // 打開手機(jī)文件對(duì)應(yīng)的輸入流
          OutputStream os = openFileOutput("android_vs_ios.jpg", MODE_PRIVATE);
          byte[] buff = new byte[1024];
          int hasRead = 0;
          // 將URL對(duì)應(yīng)的資源下載到本地
          while ((hasRead = is.read(buff)) > 0) {
            os.write(buff, 0, hasRead);
          }
          is.close();
          os.close();
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
    }.start();
  }
}

上面的程序Demo兩次調(diào)用了URL對(duì)象的openStream()方法打開URL對(duì)應(yīng)的資源的輸入流,程序第一次使用BitmapFactory的decodeStream(InputStream)方法來解析該輸入流中的圖片;第二次則使用IO將輸入流中的圖片下載到本地。
注意:由于該程序需要訪問互聯(lián)網(wǎng),因此還需要在清單文件AndroidManifest.xml文件中授權(quán)訪問互聯(lián)網(wǎng)的權(quán)限:

<!-- 授權(quán)訪問互聯(lián)網(wǎng)-->
  <uses-permission android:name="android.permission.INTERNET" />

Demo程序運(yùn)行效果界面截圖如下:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android Studio生成 Flutter 模板代碼技巧詳解

    Android Studio生成 Flutter 模板代碼技巧詳解

    這篇文章主要為大家介紹了Android Studio生成 Flutter 模板代碼技巧詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • Android開發(fā)自學(xué)筆記(三):APP布局上

    Android開發(fā)自學(xué)筆記(三):APP布局上

    這篇文章主要介紹了Android開發(fā)自學(xué)筆記(三):APP布局上,本文講解了添加ViewGroup、添加ViewGroup、定義string內(nèi)容、添加Button、運(yùn)行程序查看效果等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • Android 幀動(dòng)畫的實(shí)例詳解

    Android 幀動(dòng)畫的實(shí)例詳解

    這篇文章主要介紹了Android 幀動(dòng)畫的實(shí)例詳解的相關(guān)資料,希望通過本文能幫助到大家,讓大家掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-10-10
  • Android中捕捉menu按鍵點(diǎn)擊事件的方法

    Android中捕捉menu按鍵點(diǎn)擊事件的方法

    這篇文章主要介紹了Android中捕捉menu按鍵點(diǎn)擊事件的方法,涉及Android響應(yīng)menu菜單項(xiàng)點(diǎn)擊事件的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • Flutter 假異步的實(shí)現(xiàn)示例

    Flutter 假異步的實(shí)現(xiàn)示例

    這篇文章主要介紹了Flutter 假異步的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Android自定義Gradle插件的詳細(xì)過程

    Android自定義Gradle插件的詳細(xì)過程

    Groovy語(yǔ)言是一種jvm語(yǔ)言,最終也是編譯成class文件然后在jvm上執(zhí)行,所以所有的Java語(yǔ)言的特性Groovy都支持,我們可以完全混寫Java和Groovy,對(duì)Android自定義Gradle插件相關(guān)知識(shí),感興趣的朋友跟隨小編一起看看吧
    2021-07-07
  • Android MediaPlayer音頻播放器封裝示例淺析

    Android MediaPlayer音頻播放器封裝示例淺析

    Android提供了許多方法來控制播放的音頻/視頻文件和流。其中該方法是通過一類稱為MediaPlayer。Android是提供MediaPlayer類訪問內(nèi)置的媒體播放器的服務(wù),如播放音頻,視頻等為了使用MediaPlayer,我們要調(diào)用這個(gè)類的靜態(tài)create()方法
    2023-04-04
  • Android編程實(shí)現(xiàn)調(diào)用系統(tǒng)圖庫(kù)與裁剪圖片功能

    Android編程實(shí)現(xiàn)調(diào)用系統(tǒng)圖庫(kù)與裁剪圖片功能

    這篇文章主要介紹了Android編程實(shí)現(xiàn)調(diào)用系統(tǒng)圖庫(kù)與裁剪圖片功能,結(jié)合實(shí)例形式分析了Android針對(duì)圖形的旋轉(zhuǎn)與剪切等具體操作技巧,需要的朋友可以參考下
    2017-01-01
  • Android Studio 導(dǎo)入開源項(xiàng)目的正確姿勢(shì)及注意事項(xiàng)

    Android Studio 導(dǎo)入開源項(xiàng)目的正確姿勢(shì)及注意事項(xiàng)

    這篇文章主要介紹了Android Studio 導(dǎo)入開源項(xiàng)目的正確姿勢(shì)及注意事項(xiàng),需要的朋友參考下吧
    2018-03-03
  • Hook實(shí)現(xiàn)Android 微信、陌陌 、探探位置模擬(附源碼下載)

    Hook實(shí)現(xiàn)Android 微信、陌陌 、探探位置模擬(附源碼下載)

    這篇文章主要介紹了Hook實(shí)現(xiàn)Android 微信、陌陌 、探探位置模擬(附源碼下載)的相關(guān)資料,需要的朋友可以參考下
    2017-03-03

最新評(píng)論