AndroidでWebアクセス

とりあえずこれは必要でしょう。怪しげなRSS取り込みとかエロいテキスト書き出しとか。

Webからなんか取り出して表示

まぁサンプルなので、Yahoo!Japanのトップページでも使わせてもらいます。

ちなみに元ネタのソースはこちら→ http://wiki.livedoor.jp/moonlight_aska/d/HTTP%C4%CC%BF%AE%A4%C7%A5%C0%A5%A6%A5%F3%A5%ED%A1%BC%A5%C9%A4%B9%A4%EB

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class MainActivity extends Activity
{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        HttpURLConnection http = null;
        InputStream in = null;
        TextView web = (TextView)findViewById(R.id.texter);
        try {
            // URLにHTTP接続
            URL url = new URL("http://www.yahoo.co.jp ");
            http = (HttpURLConnection)url.openConnection();
            http.setRequestMethod("GET");
            http.connect();
            // データを取得
            in = http.getInputStream();
            // HTMLソースを読み出す
            String src = new String();
            byte[] line = new byte[1024];
            int size;
            while(true) {
                size = in.read(line);
                if(size <= 0)
                    break;
                src += new String(line);
            }
// HTMLソースを表示
            web.setText(src);
        } catch (Exception e) {
            web.setText(e.toString());
        } finally {
            try {
                if (http != null) {
                    http.disconnect();
                }
                if (in != null) {
                    in.close();
                }
            } catch (Exception e) {
            }
        }
    }
}

とりだしたデータをセーブしたいですね。

では、上で取り出したやつをファイルに保存してみましょう。

こちらは参考サイトは特になし。適当。上のソースに以下を追加。importは随時。「/sdcard/パッケージ名/test.txt」に保存します。

ちなみにディレクトリ作成は、File型に対してmkdir()で。

    public boolean mkdir(String path){
        File file = new File(path);
        return file.mkdir();
    }

    private boolean _writeTextFile(String fn, String x){
        FileOutputStream outputStream = null;
        TextView web = (TextView)findViewById(R.id.texter);
        String dir = "/sdcard/" + this.getPackageName();
        if(mkdir(dir) == true){
            web.setText("[true]\n" + web.getText());
        }else{
            web.setText("[false]\n" + web.getText());
        }
        String filename = dir + "/" + fn;
        web.setText("[" + filename + "]\n" + web.getText());
        //
        try {
            outputStream = new FileOutputStream(filename);
            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(outputStream));
            writer.write(x);
            writer.close();
        } catch (IOException ex) {
            Logger.getLogger(MainActivity.class.getName()).log(Level.SEVERE, null, ex);
            web.setText("[IOError]\n" + web.getText());
        } catch (Exception e) {
            web.setText("なんかエラー(" + e.toString() + ")" + web.getText());
        }
        return(true);
    }