Androidのweb開発 - URLを使いwebリソースにアクセスする
URL(Uniform Resource Locator)
形式: protocol://host:port/resourceName
サンプルコード
URLを使いwebのイメージを取得し、Androidアプリに表示する。
① AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET"/>
② 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"> <TextView android:id="@+id/text" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <ImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="fitCenter" /> </LinearLayout>
③ MainActivity.java
package com.example.liguofeng.urlsample; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ImageView; import android.os.Handler; import android.widget.TextView; import java.io.InputStream; import java.io.OutputStream; import java.net.URL; public class MainActivity extends AppCompatActivity { TextView text; ImageView image; // ネットからダウンロードしたイメージ Bitmap bitmap; String fileName; String hostName; String path; int port; String protocol; String query; Handler handler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what == 0x123) { // Text表示 text.setText( fileName + "\n" + hostName + "\n" + path + "\n" + port + "\n" + protocol + "\n" + query ); // イメージ表示 image.setImageBitmap(bitmap); } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // イメージURL // http://f.st-hatena.com/images/fotolife/l/liguofeng29/20160110/20160110134229_120.jpg image = (ImageView) findViewById(R.id.image); text = (TextView) findViewById(R.id.text); // サブスレッド new Thread() { @Override public void run() { try { URL url = new URL("http://f.st-hatena.com/images/fotolife/l/liguofeng29/20160110/20160110134229_120.jpg"); fileName = url.getFile(); // リソース名 hostName = url.getHost(); // ホスト名 path = url.getPath(); // パス port = url.getPort(); // ポート番号 protocol = url.getProtocol(); // プロトコル名 query = url.getQuery(); // URL検索キャラ InputStream is = url.openStream(); // URLのInputStreamからイメージ読み取り bitmap = BitmapFactory.decodeStream(is); // hanlderメッセージ送信 handler.sendEmptyMessage(0x123); } catch (Exception e) { e.printStackTrace(); } } }.start(); } }