<< Android-Note

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」以下の場合、例外は投げられないと書いてあります。

ただ、どのバージョンでもスレッドを使った方が確実です。

関連項目
プライバシーポリシー