펌 OK (출처 표시), 상업적 이용 NO, 컨텐츠 변경 NO

어플리케이션을 릴리즈 하기 위해서는 키스토어(keystore)를 생성하고, 사인(Signing)을 해야한다.

기본적으로 *디버그용 키가 적용되어 개발하는데는 문제가 없지만 이를 배포하기 위해서는 자기만의 키를 발급받고,

사인을 해서 본인의 흔적을 남겨야한다. 키는 어플의 업데이트 또는 데이터와 코드의 공유를 가능하게 해 주기때문에

중요하게 관리해야하며, 타인에게 유출되어서도 안된다.


*디버그키 - 일반적으로 C:\Users\사용자\.android\debug.keystore 에서 확인가능

컴퓨터마다 위치가 다를 수 있으니, 해당 위치에 보이지 않는다면 


여기서 확인가능하다.




이 글에서는 새로 키를 생성하고 사인하는법과 , 기존의 키를 가지고 사인하는법을 다뤄본다


1. 새로운 키(keystore) 생성과 함께 배포용 apk 생성



프로젝트 우클릭 > Android Tools > Export Signed Application Package... 클릭




프로젝트 명 생성(자동) > 다음



Create new keystore 선택 후 Browse... 클릭




임의 키 이름 입력 후 저장





비밀번호 , 비밀번호 확인 입력 후 다음




Alias는 키값을 식별할 수 있는 적절한 이름, 비밀번호도 마찬가지  (이 두가지는 이전에 설정한 값과 달라도 됨)

Validity는 keysotre의 유효기간으로, 임의로 적으면 됨

Fist and Last Name에 이름 입력 후 다음 (밑의 나머지는 회사정보나 지역명 등등 적어도 되고 안적어도 됨)




배포용 apk를 생성할 위치를 설정하고 Finish를 눌러주면 배포용 apk 생성 끝.





2. 기존의 키를 가지고 배포용 apk 생성


3번째 첨부 이미지에서 Create 대신 Use existing을 선택해주면 됨


-끝-




'Android > Compile' 카테고리의 다른 글

apk파일 디컴파일하기  (12) 2013.10.21
Proguard를 이용해 코드난독화 적용하기  (7) 2013.10.21

펌 OK (출처 표시), 상업적 이용 NO, 컨텐츠 변경 NO

퍼미션은 INTERNET



public void DataSend() {

try{

url = new URI("http://192.168.0.20:8080/testWebapp/Receive.jsp");

new Thread() {

public void run() {

try {

HttpClient httpclient = new DefaultHttpClient();

HttpPost httpPost = new HttpPost(url);

ArrayList<BasicNameValuePair> nameValuePairs = new ArrayList<BasicNameValuePair>();

nameValuePairs.add(new BasicNameValuePair("mark_id", sendMarkId));

nameValuePairs.add(new BasicNameValuePair("store_name", sendName));

nameValuePairs.add(new BasicNameValuePair("latitude", sendLat));

nameValuePairs.add(new BasicNameValuePair("longitude", sendLng));

nameValuePairs.add(new BasicNameValuePair("comments", sendTip));

nameValuePairs.add(new BasicNameValuePair("kind", sendKind));

httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "utf-8"));

httpclient.execute(httpPost);

} catch (Exception e) {

e.printStackTrace();

}

}

}.start();

}catch(Exception e){

Log.e("fureun",e.toString());

}

}

펌 OK (출처 표시), 상업적 이용 NO, 컨텐츠 변경 NO


GoogleMap gmap = ((SupportMapFragment) getSupportFragmentManager()

.findFragmentById(R.id.map)).getMap();


gmap.setOnMapLongClickListener(new OnMapLongClickListener() {

@Override

public void onMapLongClick(LatLng latLng) {

MarkerOptions markerOptions = new MarkerOptions();

markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.marker_3g));

markerOptions.position(latLng); //마커위치설정


gmap.animateCamera(CameraUpdateFactory.newLatLng(latLng));   // 마커생성위치로 이동

gmap.addMarker(markerOptions); //마커 생성

}

});



onCreat에 넣어주심됩니다.


요즘한창 v2공부하고있으니 궁금하신점 질문주시면 성심껏 알려드립니다


Android/WI-FI | Posted by 덩치 2013. 8. 5. 16:15

Wifi상태 체크 + 자동 연결해제

펌 OK (출처 표시), 상업적 이용 NO, 컨텐츠 변경 NO


WifiChecker.zip


WifiManager , WifiInfo 를 이용해 와이파이 상태를 체크하고

신호세기가 10Mbps 이하로 내려가면 자동으로 와이파이를 비활성화 시키는 예제입니다.

주석은 따로 없습니다. 궁금하신점은 댓글남겨주세요.


자동으로 다른 와이파이 검색해서 연결을 변경해주면 더 좋으련만

어떤 클래스나 메소드를 사용해서 할 수 있는지를 몰라 구현은 못했습니다.

아시는분은 댓글좀 남겨주세요 ㅎㅎ

구현하는법 알아냈습니다. 궁금하시면 댓글로 메일남겨주세요 

적용 예시 : http://biig.tistory.com/15

소스반영은 안했습니다. (2013.10.23 수정)




package com.example.wifichecker;



import android.app.Activity;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.content.IntentFilter;

import android.net.wifi.WifiInfo;

import android.net.wifi.WifiManager;

import android.os.Bundle;

import android.os.Handler;

import android.widget.TextView;

import android.widget.Toast;


public class MainActivity extends Activity {

WifiManager wifiManager,wifiManager2;

WifiInfo wifiInfo,wifiInfo2;

TextView tv;

int speed;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

tv = (TextView)findViewById(R.id.tv);

wifiManager = (WifiManager)getSystemService(WIFI_SERVICE);

wifiInfo = wifiManager.getConnectionInfo();

IntentFilter filter = new IntentFilter();

filter.addAction(wifiManager.WIFI_STATE_CHANGED_ACTION);

registerReceiver(wifiReceiver,filter);

}


private BroadcastReceiver wifiReceiver = new BroadcastReceiver() {

public void onReceive(Context context, Intent intent) {

if(wifiManager.getWifiState()==3){

hd.post(callback);

hd2.postDelayed(callback2, 10000);

}else{

hd.removeCallbacks(callback);

tv.setText("Wifi가 비활성화 상태입니다.");

}

}

};


Handler hd2 = new Handler();

public Runnable callback2 = new Runnable(){

public void run(){

hd2.postDelayed(this, 5000);

if(speed<10){

hd.removeCallbacks(callback);

hd2.removeCallbacks(callback2);

wifiManager.setWifiEnabled(false);

Toast.makeText(MainActivity.this, "Wifi 연결이 종료되었습니다.", Toast.LENGTH_SHORT).show();

tv.setText("Wifi가 비활성화 상태입니다.");

}

}

};

Handler hd = new Handler();

public Runnable callback = new Runnable(){

public void run() {

if(wifiManager.getWifiState()==3){

wifiManager2 = (WifiManager)getSystemService(WIFI_SERVICE);

wifiInfo2 = wifiManager2.getConnectionInfo();

String id = wifiInfo2.getSSID();

speed = (wifiInfo2.getLinkSpeed());

double aa = speed+0.0;

double aaa = aa/8.0;

String num = String.format("%.2f" , aaa);

double latency = wifiManager2.WIFI_MODE_FULL_HIGH_PERF;

String num2 = String.format("%.2f", latency);

String view = "Wifi Id : "+wifiInfo2.getSSID()+"\n"+"\n"+"Speed : "+num+"MBps" + "\n" +"\n"+ "Power : " + 

String.valueOf(wifiInfo2.getRssi()+"dBm"+"\n"+"\n"+"Power : "+num2+"ms");

tv.setText(view);

hd.postDelayed(this, 3000);

}else{

tv.setText("Wifi가 비활성화 상태입니다.");

hd.removeCallbacks(callback);

}

}

};

@Override

protected void onDestroy() {

// TODO Auto-generated method stub

super.onDestroy();

hd.removeCallbacks(callback);

hd2.removeCallbacks(callback2);

}

}



펌 OK (출처 표시), 상업적 이용 NO, 컨텐츠 변경 NO

따로 파일은 첨부하지 않겠습니다.

xml에서 버튼아이디 설정과 android:onClick="onClick" 라고 선언해주면

이렇게 동적으로 사용 가능합니다




MainActivity.java



package com.example.buttontest;


import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.widget.TextView;


public class MainActivity extends Activity {

TextView tv;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

tv = (TextView)findViewById(R.id.tv);

}

public void onClick(View v){

switch (v.getId()){

case  R.id.bt1:

tv.setText("버튼1");

break;

case R.id.bt2:

tv.setText("버튼2");

break;

case R.id.bt3:

tv.setText("버튼3");

break;

case R.id.bt4:

tv.setText("버튼4");

break;

}

}

}






activity_main.xml



<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

    <LinearLayout
        android:layout_width="wrap_content"
     android:layout_height="wrap_content">
    
    <Button
        android:id="@+id/bt1"
        android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:text="버튼1"
     android:onClick="onClick"/>
    
    <Button
        android:id="@+id/bt2"
        android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:text="버튼2"
     android:onClick="onClick"/>
 
    </LinearLayout>
     <LinearLayout
        android:layout_width="wrap_content"
     android:layout_height="wrap_content">
    
    <Button
        android:id="@+id/bt3"
        android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:text="버튼3"
     android:onClick="onClick"/>
    
    <Button
        android:id="@+id/bt4"
        android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:text="버튼4"
     android:onClick="onClick"/>
 
    </LinearLayout>   
    
    
    
</LinearLayout>


펌 OK (출처 표시), 상업적 이용 NO, 컨텐츠 변경 NO


timer3.zip


따로 주석은 없으니 궁금한점은 댓글 남겨주세요



숫자를 초단위로 입력받아 계산버튼을 누르면 자동으로 시간,분,초로 반환해주고 시작버튼을 누르면

카운트다운이 시작됩니다.


쉐어드프레퍼런스를 이용해 시간값을 저장했기때문에 종료했다가 켜도 마지막 시간이 그대로 남아있습니다.


공부용으로 만드느라 타이머를 구현해주는 API등은 사용하지 않았기때문에 많이 미흡합니다.



MainActivity.java


package com.example.timer3;


import android.app.Activity;

import android.content.SharedPreferences;

import android.content.SharedPreferences.Editor;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.util.Log;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import android.widget.TextView;


public class MainActivity extends Activity {

SharedPreferences prefs;

Editor ePref;

Button start,go,stop,allstop;

Boolean bool = true;

EditText in;

TextView tv;

String text,Str;

int t,hour,minute,second;


@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

start = (Button)findViewById(R.id.start);

go = (Button)findViewById(R.id.go);

stop = (Button)findViewById(R.id.stop);

allstop = (Button)findViewById(R.id.allstop);

in = (EditText)findViewById(R.id.in);

tv = (TextView)findViewById(R.id.tv);


prefs = getSharedPreferences("Save",Activity.MODE_PRIVATE);

t = prefs.getInt("t",t);

sum();

Str = String.format("%02d시간 %02d분 %02d초",hour,minute,second);

tv.setText(Str);

in.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

in.setText("");

}

});

start.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {  

try{

text = in.getText().toString();

t = Integer.parseInt(text);

sum();

Str = String.format("%02d시간 %02d분 %02d초",hour,minute,second);

tv.setText(Str);

}catch(Exception e){}

}

});

go.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

bool = true;

thread threadTest = new thread();

threadTest.setDaemon(true);

   threadTest.start();

}

});

stop.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

bool = false;

}

});

allstop.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

bool = false;

t = 0;

sum();

Str = String.format("%02d시간 %02d분 %02d초",hour,minute,second);

tv.setText(Str);

}

});

}


public class thread extends Thread{

public void run(){

while(bool){

handler.sendEmptyMessage(0);

try{

Thread.sleep(1000);

}catch (Exception e){}

}

}

}

Handler handler = new Handler(){

public void handleMessage(Message msg){

if(msg.what ==0){

if(t>0){

Log.d("fureun","XD");

t--;

sum();

Str = String.format("%02d시간 %02d분 %02d초",hour,minute,second);

tv.setText(Str);

}

}

}

};

public void sum(){

hour =  t/3600;

minute = (t%3600)/60;

second = (t%3600)%60;

}

@Override

protected void onDestroy() {

// TODO Auto-generated method stub

super.onDestroy();

bool = false;

ePref = prefs.edit();

ePref.putInt("t",t);

ePref.commit();

}

}






activity_main.xml




<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
android:gravity="center|top"
android:orientation="vertical"
    tools:context=".Mai`nActivity" >
    <TextView
        android:id="@+id/tv"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
    android:layout_centerVertical="true"    
        android:textSize="20pt"
android:gravity="center_horizontal"
android:paddingBottom="30pt"
android:paddingTop="30pt"
        android:text="00시간 00분 00초" />
<EditText
   android:id="@+id/in"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:layout_marginBottom="30pt"
   android:text="시간을입력하세요"/>
<LinearLayout
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
  android:orientation="horizontal"
   >
<Button
   android:id="@+id/start"
   android:layout_width="wrap_content"
        android:layout_height="wrap_content"
android:layout_weight="1"
        android:text="계산" />
  <Button
   android:id="@+id/go"
   android:layout_width="wrap_content"
        android:layout_height="wrap_content"
android:layout_weight="1"
        android:text="시작" />
  <Button
   android:id="@+id/stop"
   android:layout_width="wrap_content"
        android:layout_height="wrap_content"
android:layout_weight="1"
        android:text="일시정지" />
<Button
   android:id="@+id/allstop"
   android:layout_width="wrap_content"
        android:layout_height="wrap_content"
android:layout_weight="1"
        android:text="중지" />
   
</LinearLayout>
</LinearLayout>


'Android > 예제' 카테고리의 다른 글

XmlPullParser를 이용한 파싱 예제  (2) 2013.07.24

펌 OK (출처 표시), 상업적 이용 NO, 컨텐츠 변경 NO


Wificheck.zip


와이파이가 연결되어있다는 가정하에 만들었습니다.

연결안되어도 에러는 나지 않습니다. 와이파이 연결 후 속도측정용입니다.


공부할겸 만든거라 WifiInfo를 이용해 띄운 와이파이 명 , WifiManager를 이용해 띄운 속도 밖에 없습니다.


주석은 안달려있으니 궁금하신점은 댓글로 남겨주세요



매니패스트 퍼미션은


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

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


두줄 추가입니다



package com.example.wificheck;



import android.app.Activity;

import android.net.wifi.WifiInfo;

import android.net.wifi.WifiManager;

import android.os.Bundle;

import android.os.Handler;

import android.util.Log;

import android.view.Menu;

import android.widget.TextView;


public class MainActivity extends Activity {

WifiManager wifiManager,wifiManager2;

TextView tv;

WifiInfo wifi,wifi2;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

tv = (TextView)findViewById(R.id.tv);

wifiManager2 = (WifiManager)getSystemService(WIFI_SERVICE);

wifi2 = wifiManager2.getConnectionInfo();

handler.post(callback);

}

Handler handler = new Handler();

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}


public Runnable callback = new Runnable(){

@Override

public void run() {

Boolean bool = wifiManager2.isWifiEnabled();

// TODO Auto-generated method stub

handler.postDelayed(callback, 1000);

wifiManager = (WifiManager)getSystemService(WIFI_SERVICE);

wifi = wifiManager.getConnectionInfo();

String wifiinfo = WifiInfo.LINK_SPEED_UNITS;

int speed = wifi.getLinkSpeed();

String name = wifi.getSSID();

String TEXT = "Wifi Name : "+name+"\n"+"Speed : "+ String.valueOf(speed)+" "+wifiinfo;

tv.setText(TEXT);

}

};

}



Android/예제 | Posted by 덩치 2013. 7. 24. 13:05

XmlPullParser를 이용한 파싱 예제

펌 OK (출처 표시), 상업적 이용 NO, 컨텐츠 변경 NO

14년 1월 17일 수정내용 ----- 예제 프로젝트 실행이 안된다고 해서 알아보니 다른 패키지가 섞여있었네요.

weather 패키지 삭제한 상태이며 정상작동합니다.



net2.zip



사용한 기능 - XmlPullParser , AlertDialog 등등


매니패스트 퍼미션은 

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

추가입니다.


InputStreamReader로 웹사이트 내용을 읽어와 URL로 넘겨주고

XmlPullParser를 이용해 한경닷컴 뉴스 제목과 내용을 파싱



MainActivity.java


package com.example.net2;


import java.io.BufferedReader;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.StringReader;

import java.net.HttpURLConnection;

import java.net.URL;

import java.util.ArrayList;


import org.xmlpull.v1.XmlPullParser;

import org.xmlpull.v1.XmlPullParserFactory;


import android.app.Activity;

import android.app.AlertDialog;

import android.app.AlertDialog.Builder;

import android.content.DialogInterface;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.util.Log;

import android.view.View;

import android.widget.AdapterView;

import android.widget.AdapterView.OnItemClickListener;

import android.widget.ArrayAdapter;

import android.widget.Button;

import android.widget.EditText;

import android.widget.ListView;

import android.widget.Toast;


public class MainActivity extends Activity {

private Builder listDialog;

EditText urltest;

String urlStr,tv,readLine,item;

String tagName,title,body,link = null;

ListView screen;

StringBuffer sb;

Button bt;

int eventType;

XmlPullParser xpp;

XmlPullParserFactory factory;

AlertDialog.Builder dialogBuilder;

ArrayList<String> arrList,arrList2;

ArrayAdapter<String> adapter,adapter2;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

final AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);

bt = (Button)findViewById(R.id.bt);

screen = (ListView)findViewById(R.id.screen);

urltest = (EditText)findViewById(R.id.urltest);


arrList = new ArrayList<String>();

arrList2 = new ArrayList<String>();

adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,arrList);

screen.setAdapter(adapter);

dialog();

urltest.setOnLongClickListener(new View.OnLongClickListener() {

@Override

public boolean onLongClick(View arg0) { //주소창을 길게 터치하면 다이얼로그창 뷰

dialog();

return false;

}});

screen.setOnItemClickListener(new OnItemClickListener() {  //리스트 목록을 터치하면 이벤트 실행

public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

dialogBuilder.setTitle(parent.getItemAtPosition(position).toString());

       dialogBuilder.setMessage(arrList2.get(position).toString());

       dialogBuilder.setPositiveButton("확인", null);

       dialogBuilder.show();

}});

bt.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

adapter.clear(); //어뎁터,리스트를 초기화시켜 새로운 데이터를 받음

arrList.clear();

adapter.notifyDataSetChanged(); //이까지. 초기화된걸 어뎁터로 리스트와 연결시켜줌

urlStr = urltest.getText().toString();

NetworkThread thread = new NetworkThread(); //스레드 선언과 호출

thread.setDaemon(true); //이거해줘야 종료될때 스레드가 죽는다는데 잘모르겠음

thread.start();

}});}


class NetworkThread extends Thread {

public void run() {

stream();

}}

Handler handler = new Handler(){

public void handleMessage(Message msg){

if(msg.what ==0){

adapter.notifyDataSetChanged();

}}};

public void parsing(){

try{

factory = XmlPullParserFactory.newInstance();

factory.setNamespaceAware(true);

xpp = factory.newPullParser();

xpp.setInput(new StringReader (tv.trim()));

eventType = xpp.getEventType();

while (eventType != XmlPullParser.END_DOCUMENT){ //최초 title테그안에 쓸데없는 내용이 있어서 추가해줬음. 

if(eventType == XmlPullParser.START_TAG){             //ex)RSS 한경닷컴어쩌구저쩌구 제목과상관없는내용

String tagName2 = xpp.getName();

if(tagName2.equals("item")){ //아이템 테그 이후부터 검색시작

while (eventType != XmlPullParser.END_DOCUMENT){

if(eventType == XmlPullParser.START_TAG){ //스타트테그를 만나면 테그값 저장

tagName = xpp.getName();

}

else if(eventType == XmlPullParser.TEXT){ //스타트테그가 아니라 텍스트일경우

if(tagName!=null){ //텍스트가 쓰래기값인경우를 배제

if(tagName.equals("title")){ //필요한건 타이틀과 본문이기때문에 스타트테그는 타이틀일때 실행

title = xpp.getText().trim();

if (title.length() > 0) { //여기도 한경닷컴특성상 제목 \n 공백 \n 제목 이런식으로돼있어서 추가

arrList.add(title);

}

}else if(tagName.equals("description")){  //스타트테그가 타이틀이 아니라 본문이면 마찬가지로 수행

link = xpp.getText().trim();

if(link.length()>0){

arrList2.add(link);

}}}}

eventType = xpp.next();

}}}

eventType = xpp.next();

}

}catch (Exception e){}}

public void stream(){  //홈페이지 정보를 읽어들여 파서로 넘겨주기위한 매서드

HttpURLConnection urlConnection = null;

try {

URL url = new URL(urlStr);

urlConnection = (HttpURLConnection) url.openConnection(); //url 연결

InputStream in = urlConnection.getInputStream(); //url내용을 비트형으로읽어옴

InputStreamReader isr = new InputStreamReader(in); // 뭐더라 다시 리더로 변환해주는과정

BufferedReader buf = new BufferedReader(isr); //줄단위로 읽어주기위해 실행

sb = new StringBuffer(); //buf의 한줄 한줄 값을 입력받아 한꺼번에 출력시키기 위해 사용


while (true) {

readLine = buf.readLine();

if (readLine == null) //읽어올 값이 없으면

break; //멈춤 그렇지않으면

sb.append(readLine); //스트링버퍼에 리드라인 내용 계속 추가

sb.append("\n"); //이게없으면 줄바꿈이없어서 알아보기가힘듦. buf의 줄바꿈단위마다 실행

}

tv = sb.toString();

parsing();


handler.sendEmptyMessage(0); //핸들러호출

}

catch (Exception e) {

}

finally {

if (urlConnection != null) {

urlConnection.disconnect();

}}}

public void dialog(){ //다이얼로그 메시지 출력부

final String[] items = {"증권","경제/금융","부동산","산업","국제","정치","사회","스포츠/문화","사설/칼럼"}; //다이얼로그에 리스트 추가

listDialog = new AlertDialog.Builder(this); //다이얼로그 선언

listDialog.setTitle("목차").setItems(items, new DialogInterface.OnClickListener() { //다이얼로그 내에 items값을 갖는 리스트 추가

@Override

public void onClick(DialogInterface arg0, int val) {

// TODO Auto-generated method stub

Toast.makeText(MainActivity.this, "선택 : "+items[val], Toast.LENGTH_SHORT).show();

if(items[val].equals("증권")){  //리스트 내용을 클릭하면 그에 맞게 에디트뷰의 주소를 설정한대로 입력

urltest.setText("http://rss.hankyung.com/new/news_stock.xml");

}else if(items[val].equals("경제/금융")){  //여기서 equals로 비교하지 않고 인덱스를 받아서 하면 더 편리함

urltest.setText("http://rss.hankyung.com/new/news_economy.xml");

}else if(items[val].equals("부동산")){

urltest.setText("http://rss.hankyung.com/new/news_estate.xml");

}else if(items[val].equals("산업")){

urltest.setText("http://rss.hankyung.com/new/news_industry.xml");

}else if(items[val].equals("국제")){

urltest.setText("http://rss.hankyung.com/new/news_intl.xml");

}else if(items[val].equals("정치")){

urltest.setText("http://rss.hankyung.com/new/news_politics.xml");

}else if(items[val].equals("사회")){

urltest.setText("http://rss.hankyung.com/new/news_society.xml");

}else if(items[val].equals("스포츠/문화")){

urltest.setText("http://rss.hankyung.com/new/news_sports.xml");

}else if(items[val].equals("사설/칼럼")){

urltest.setText("http://rss.hankyung.com/new/news_column.xml");

}}

}).setNegativeButton("직접입력",null).show();

}}




activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        >
   <EditText
       android:id="@+id/urltest"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="http://rss.hankyung.com/new/news_economy.xml"
       android:layout_weight="4" />
   <Button
       android:id="@+id/bt"
       android:layout_width="150dp"
       android:layout_height="wrap_content"
       android:text="검색"
       android:layout_weight="1"/>
    </LinearLayout>
   
    <ListView
        android:id="@+id/screen"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:layout_weight="1" />

</LinearLayout>


Android/기본스킬 | Posted by 덩치 2013. 7. 20. 14:21

EditText 입력값 받아오기

펌 OK (출처 표시), 상업적 이용 NO, 컨텐츠 변경 NO

String 변수명 = EditTextId.getText().toString();


에디트텍스트에 직접 입력한 텍스트 내용을 변수내용에 대입