ネットワーク上のデータを取得できるようになった!

StartActivity.java

package jp.wpblog.valletta.denpo;

import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class StartActivity extends AppCompatActivity
        implements View.OnClickListener {
    private final static String URL="http://valletta.exp.jp/wp/wp-content/uploads/2016/08/testcsv.csv";
    String text;
    Handler handler=new Handler();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_start);
        Button btn = (Button)findViewById(R.id.button);
        btn.setOnClickListener(this);
    }
    public void onClick(View v) {
        // ここに処理を記述
        Thread thread=new Thread(new Runnable(){public void run(){
            //HTTP通信
            try{
                text=new String(http2data(URL));
            } catch(Exception e){
                text=null;
            }
            //ハンドラの生成
            handler.post(new Runnable(){public void run(){
                if(text!=null){
                    TextView tv = (TextView)findViewById(R.id.textView);
                    tv.setText(text);
                }else{

                }
            }});
        }});
        thread.start();
        //Intent intent = new Intent();
        //intent.setClassName("jp.wpblog.valletta.denpo", "jp.wpblog.valletta.denpo.MainActivity");
        //startActivity(intent);
    }
    public static byte[] http2data(String path)throws Exception{
        byte[] w=new byte[1024];
        HttpURLConnection c=null;
        InputStream in=null;
        ByteArrayOutputStream out=null;
        try{
            //HTTP接続のオープン
            URL url=new URL(path);
            c=(HttpURLConnection)url.openConnection();
            c.setRequestMethod("GET");
            c.connect();
            in=c.getInputStream();

            //バイト配列の読み込み
            out=new ByteArrayOutputStream();
            while(true){
                int size=in.read(w);
                if(size<=0) break;
                out.write(w,0,size);
            }
            out.close();

            //HTTP通信のクローズ
            in.close();
            c.disconnect();
            return out.toByteArray();
        }catch(Exception e){
            try {
                if (c != null) c.disconnect();
                if (in != null) in.close();
                if (out != null) out.close();
            }catch(Exception e2){
            }
            throw e;
        }
    }
}

ボタンを押すとネットワーク上にあるcsvファイルを読んで表示するプログラム

参考:布留川英一著、Androidプログラミングバイブル

Follow me!