대부분은 외부 라이브러리를 사용하는 방법인데, 그만큼 기본으로 제공하는 기능이 많이 빈약하기 때문.
하지만, 가급적이면 외부 라이브러리 없이 구현.
일단 기본 틀은 이전에 작업했던 폼을 사용.
리스트 뷰 사용 : http://son10001.blogspot.kr/2016/05/android-studio-listview.html
여기다 버튼을 하나 추가해서 기능을 구현해 본다.
버튼을 하나 추가해 놓고...
메인 액티비티에 클릭 이벤트 등록해 놓고...
클릭 이벤트 리스너와 웹 페이지 조회 루틴 작성.
package com.son10001.formbasic; import android.os.AsyncTask; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListView; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.ProtocolException; import java.net.URL; public class BasicActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_basic); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); String[] names = {"Item01", "Item02", "Item03", "Item04", "Item05"}; ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, names); ListView listView = (ListView) findViewById(R.id.listView); listView.setAdapter(adapter); // 클릭이벤트 findViewById(R.id.btnGetWeb).setOnClickListener(mClickListener); } Button.OnClickListener mClickListener = new View.OnClickListener() { public void onClick(View v) { try { new HttpUtil().execute(); } catch (Exception e) { e.printStackTrace(); } } }; private URL Url; private String strUrl,strCookie,result; public class HttpUtil extends AsyncTask<Void, Void, Void> { @Override protected void onPreExecute() { super.onPreExecute(); strUrl = "http://192.168.0.181:916/gettest.aspx"; } @Override protected Void doInBackground(Void... voids) { try{ Url = new URL(strUrl); HttpURLConnection conn = (HttpURLConnection) Url.openConnection(); conn.setRequestMethod("GET"); // get방식 통신 conn.setDoOutput(true); conn.setDoInput(true); conn.setUseCaches(false); conn.setDefaultUseCaches(false); strCookie = conn.getHeaderField("Set-Cookie"); InputStream is = conn.getInputStream(); StringBuilder builder = new StringBuilder(); BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8")); String line; while ((line = reader.readLine()) != null) { builder.append(line+ "\n"); } result = builder.toString(); }catch(MalformedURLException | ProtocolException exception) { exception.printStackTrace(); }catch(IOException io){ io.printStackTrace(); } return null; } @Override protected void onPostExecute(Void aVoid) { super.onPostExecute(aVoid); System.out.println(result); } } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_basic, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }
여기까지 작성되었으면...
AndroidManifest.xml 에 인터넷 접속 가능 속성 지정.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
이제 실행을 해보면...
이렇게 버튼을 클릭 할때 마다 지정한 웹 페이지의 내용을 로그로 출력해 준다.