URLからファイルのダウンロード
HTTP経由でファイルを端末にダウンロードする場合、URLからストリームを取得してファイルを読み込みできます。
ただし、UIスレッド内で直接読み込もうとするとNetworkOnMainThreadExceptionが投げられてしまいます。
そこでファイルをURLからダウンロードするときはスレッドを使うと安全に読み込みができます。
new Thread(new Runnable() { public void run() { URL url = new URL("http://xxx.xxx.com/index.html"); //ダウンロードするファイルのURL URLConnection conn = url.openConnection(); InputStream in = conn.getInputStream(); byte[] buffer = new byte[conn.getContentLength()]; in.read(buffer, 0, conn.getContentLength()); //全部読み込み in.close(); } }).start();
この例ではbyte配列にすべてのデータを読み込んでいます。
NetworkOnMainThreadExceptionのリファレンスを見るとSDKが「Honeycomb」以下の場合、例外は投げられないと書いてあります。
ただ、どのバージョンでもスレッドを使った方が確実です。
関連項目
© Kaz