Androidでネットワーク上のファイルをダウンロードする

android-download.png

注意!メインスレッドではダウンロードできない!

android.os.NetworkOnMainThreadException が出ます。遅くなるからなのかなぁ

注意その2 AndroidManifest.xmlに追記しないといけない

インターネットにアクセスをするプログラムだと思うのですが、Androidアプリケーションでインターネットへのアクセスを許可する場合、AndroidManifest.xmlのmanifestタグの範囲内に

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

という記述を追加する必要があります。missing INTERNET permission?というエラー表示もありますし。

ソースコード

package myamahir.yahoo.boundingbox;
 
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
 
/**
 * Created by myamahir on 2014/12/18.
 */
public class DownLoader {
    public static InputStream download(String urlstr){
        try {
            URL url = new URL(urlstr);
            //コネクション開いて接続
            URLConnection urlcon = url.openConnection();
            HttpURLConnection http_con =(HttpURLConnection)urlcon;
            http_con.setRequestProperty("accept-encoding", "gzip");
            http_con.setRequestMethod("GET");
            http_con.connect();
            String contentEncoding = http_con.getContentEncoding();
            InputStream inStreamm = null;
            if(contentEncoding!=null && contentEncoding.contains("gzip")){
                inStreamm = new java.util.zip.GZIPInputStream(http_con.getInputStream());
            }else{
                inStreamm = http_con.getInputStream();
            }
            return inStreamm;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
}

download

サポートサイト Wikidot.com download