import java.io.*;
import java.net.*;
import org.xmlpull.v1.*;
import android.app.*;
import android.content.res.*;
import android.os.*;
import android.view.*;
import android.view.View.OnClickListener;
import android.widget.*;
public class AppContestActivity extends Activity{
/** Called when the activity is first created. */
public int checkedItem = 0;
public String[] site;
public String select_site = null;
public EditText btn_site;
public TextView bus_list;
String str;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn_parsing = (Button)findViewById(R.id.btn_parsing);
btn_site = (EditText)findViewById(R.id.btn_site);
bus_list = (TextView)findViewById(R.id.bus_list);
str = bus_list.getText().toString();
btn_site.setOnClickListener(click);
btn_parsing.setOnClickListener(click);
Resources res = getResources();
site= res.getStringArray(R.array.Site);
}
private OnClickListener click = new OnClickListener() {
public void onClick(View v) {
switch(v.getId()) {
case R.id.btn_parsing:
Parsing();
}
}
};
public void Parsing() {
btn_site = (EditText)findViewById(R.id.btn_site);
String xml = "저의 API키 값"
URL url = null;
InputStream in;
try {
xml = xml + btn_site.getText().toString();
url = new URL("xml);
in = url.openStream();
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser parser = factory.newPullParser();
parser.setInput(in,null);
//parser.setInput(in, "");
Receive(parser);
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void Receive(XmlPullParser parser) {
boolean flag = false;
String sTag;
try {
int eventType = parser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
// Wait(10);
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
break;
case XmlPullParser.END_DOCUMENT:
break;
case XmlPullParser.START_TAG:
// items.add(xpp.getAttributeValue(0));
sTag = parser.getName();
if (sTag.equals("itemList")) {
flag = true;
}
if (flag == true) {
if (sTag.equals("stNm")) {
String temp = parser.nextText();
Toast.makeText(getApplicationContext(), temp, 1000).show();
str = str+temp+" --> ";
bus_list.setText(str);
}
}
break;
case XmlPullParser.END_TAG:
sTag = parser.getName();
if (sTag.equals("current_conditions")) {
flag = false;
}
break;
case XmlPullParser.TEXT:
break;
}
eventType = parser.next();
}
} catch (Exception e) {
e.printStackTrace();
}
}
class Han implements Runnable {
public void run() {
Parsing();
}
}
}
-----------
소스 코드이구요..
이대로 가상머신으로 돌리면 잘 돌아갑니다. API를 통해 xml정보도 잘 받아오고 출력까지 잘 됩니다.
그런데 실제 단말을 연결해서 run시키면 xml정보를 받아오려고 하면 앱이 강제종료되버리네요..
단말 스펙은 갤럭시s2이구요.(현재 아이스크림 샌드위치쓰고 있습니다.)
어플은 2.33 진저브레드로 개발했구요.
자세한 설명 부탁드려요 ㅠㅠ
** 에러메시지 log 파일에 첨부하였습니다 ㅠㅠㅠ




원래 에뮬과 폰은 달라요
우선 온크레잇 에서 빼내어 다른 함수로 코드를 옮긴후 스레드와 핸들러로 처리해 보세요
사용되는 시점의 오류인듯 합니다.