개발의 편의를 위해 SVN 서버에 서버를 올리고 필요할 때 마다 노트북이나 PC로 다운을 받아서 쓸려고 할 때, 맨 처음 share project 만 하고, commit을 안하는 경우가 있다.
이러면 소스가 올라가 지지 않는다.
Share project를 한 후
반드시 프로젝트를 commit 를 해줘야 한다 ~! (이 과정을 깜박 잊고 "왜 안되지?" 하는 경우가 많다... ㅠㅠ)
이 과정을 안 거치면,
아래와 같이 프로젝트 폴더만 나오고 하위의 소스 파일들과 폴더들이 나오지 않는다..
(왜냐... 아직 Commit 한게 없기 때문이다!)
이 블로그 검색
2012년 2월 5일 일요일
2012년 2월 2일 목요일
Exception 이 나면 메써드를 자동 종료하고 빠져 나오나?
아래와 같은 메써드에서 에러가 나는 것도 아니고, 자꾸 아래 1번이라고 써있는 곳 까지만 로그가 찍히고 그 밑에 로직은 전혀 타지 않았다..
알고보니 SetMrzBuho라는 메서드가 ClassCastException 이 나서 주석처리하고 다시 실행해 보니 정상적으로 실행이 되더라... (이럴수도 있는 건가? ** 어쨋든 시스템 로그도 틈틈히 봐야 겠다.)
private void OnS32(byte[] ss) {
String sBuho;
sBuho = ArS32_2.xS(ss, 2, 0);
Log.d("OOOOO", "ss in ShowCurrentPrice = " + ss);
// 현재가
_a(R.id.cur_price_v, Util.addComma(ArS32_2.xS(ss, 4, 0).replace(".", "").trim()), 0);
Log.d("OOOOOO", "cur_price_v =11111 = " + Util.addComma(ArS32_2.xS(ss, 4, 0).replace(".", "").trim()));
Log.d("OOOOOO", "XXXXXXXXXXXXXXXXXXXXXXXX11111"); //1번
// 등락부호
SetMrzBuho(R.id.arrow, sBuho); // 이 녀석이 Exception 이 발생하는 녀석이었다. (classCast Exception) 그런데 딱 여기까지만 진행 되고 밑에 로그가 안찍히는 거다~!! 이런 일도 가능한가?
// 전일비
_a(R.id.updown_v,
Util.addComma(ArS32_2.xS(ss, 3, 0).replace(".", "").trim()),
Util.drColor(sBuho));
Log.d("OOOOOO", "updown_v = 2222 " + Util.addComma(ArS32_2.xS(ss, 3, 0).replace(".", "").trim()));
Log.d("OOOOOO", "XXXXXXXXXXXXXXXXXXXXXXXX22222");
// 등락률
_a(R.id.ratio_v,
Util.addComma(ArS32_2.xS(ss, 5, 0).replace(".", "").trim(), 2) + "%", Util.drColor(sBuho));
Log.d("OOOOOO", "ratio_v = 33333 " + Util.addComma(ArS32_2.xS(ss, 5, 0).replace(".", "").trim(), 2));
Log.d("OOOOOO", "XXXXXXXXXXXXXXXXXXXXXXXX33333");
}
알고보니 SetMrzBuho라는 메서드가 ClassCastException 이 나서 주석처리하고 다시 실행해 보니 정상적으로 실행이 되더라... (이럴수도 있는 건가? ** 어쨋든 시스템 로그도 틈틈히 봐야 겠다.)
private void OnS32(byte[] ss) {
String sBuho;
sBuho = ArS32_2.xS(ss, 2, 0);
Log.d("OOOOO", "ss in ShowCurrentPrice = " + ss);
// 현재가
_a(R.id.cur_price_v, Util.addComma(ArS32_2.xS(ss, 4, 0).replace(".", "").trim()), 0);
Log.d("OOOOOO", "cur_price_v =11111 = " + Util.addComma(ArS32_2.xS(ss, 4, 0).replace(".", "").trim()));
Log.d("OOOOOO", "XXXXXXXXXXXXXXXXXXXXXXXX11111"); //1번
// 등락부호
SetMrzBuho(R.id.arrow, sBuho); // 이 녀석이 Exception 이 발생하는 녀석이었다. (classCast Exception) 그런데 딱 여기까지만 진행 되고 밑에 로그가 안찍히는 거다~!! 이런 일도 가능한가?
// 전일비
_a(R.id.updown_v,
Util.addComma(ArS32_2.xS(ss, 3, 0).replace(".", "").trim()),
Util.drColor(sBuho));
Log.d("OOOOOO", "updown_v = 2222 " + Util.addComma(ArS32_2.xS(ss, 3, 0).replace(".", "").trim()));
Log.d("OOOOOO", "XXXXXXXXXXXXXXXXXXXXXXXX22222");
// 등락률
_a(R.id.ratio_v,
Util.addComma(ArS32_2.xS(ss, 5, 0).replace(".", "").trim(), 2) + "%", Util.drColor(sBuho));
Log.d("OOOOOO", "ratio_v = 33333 " + Util.addComma(ArS32_2.xS(ss, 5, 0).replace(".", "").trim(), 2));
Log.d("OOOOOO", "XXXXXXXXXXXXXXXXXXXXXXXX33333");
}
2012년 2월 1일 수요일
안드로이드 SMS, MMS 삭제
*SMS(단문 문자)와 MMS(장문 문자)가 지우는 로직이 다르다 ~!! --> 엄청 헤멤.
안드로이드 개발 문서가 빈약함을 절실하게 느낀다.. ㅜㅜ
ContentResolve에 쓰이는 URI에 대한 설명이 어디에도 없다.. ;;
어떻게 알고 쓰라고?!
public void deleteSpecifiedSMSHistory(ArrayList<String>address){
Uri uri = Uri.parse("content://sms"); //우선 Content URI가 다르다.
Uri uri_mms = Uri.parse("content://mms");
ContentResolver contentResolver = getContentResolver();
for (int i = 0; i < address.size(); i++) {
String where = "address = " + "'" + address.get(i) + "'";
Cursor cursor = contentResolver.query(uri, null, where, null, null);
Cursor cursor_mms = contentResolver.query(uri_mms, null, where, null, null) ;
while (cursor.moveToNext()) { // Delete SMS
long thread_id = cursor.getLong(1); // SMS는 thread_id 값을
Uri thread = Uri.parse("content://sms/conversations/"+ thread_id);
getContentResolver().delete(thread, null, null);
}
while(cursor_mms.moveToNext()){ //Delete MMS
long _id = cursor_mms.getLong(0); // MMS는 _id 값을 가져와야 정상적으로 삭제가 된다 !! 이것을 누가 알까?
Uri thread = Uri.parse("content://mms/inbox/" + _id);
getContentResolver().delete(thread, null, null);
}
}
}
안드로이드 개발 문서가 빈약함을 절실하게 느낀다.. ㅜㅜ
ContentResolve에 쓰이는 URI에 대한 설명이 어디에도 없다.. ;;
어떻게 알고 쓰라고?!
public void deleteSpecifiedSMSHistory(ArrayList<String>address){
Uri uri = Uri.parse("content://sms"); //우선 Content URI가 다르다.
Uri uri_mms = Uri.parse("content://mms");
ContentResolver contentResolver = getContentResolver();
for (int i = 0; i < address.size(); i++) {
String where = "address = " + "'" + address.get(i) + "'";
Cursor cursor = contentResolver.query(uri, null, where, null, null);
Cursor cursor_mms = contentResolver.query(uri_mms, null, where, null, null) ;
while (cursor.moveToNext()) { // Delete SMS
long thread_id = cursor.getLong(1); // SMS는 thread_id 값을
Uri thread = Uri.parse("content://sms/conversations/"+ thread_id);
getContentResolver().delete(thread, null, null);
}
while(cursor_mms.moveToNext()){ //Delete MMS
long _id = cursor_mms.getLong(0); // MMS는 _id 값을 가져와야 정상적으로 삭제가 된다 !! 이것을 누가 알까?
Uri thread = Uri.parse("content://mms/inbox/" + _id);
getContentResolver().delete(thread, null, null);
}
}
}
2012년 1월 26일 목요일
안드로이드 XML 파일 Design 모드에서 Graphical Layout 모드로 보기
layout 파일 등의 xml 파일이
종종 Design 모드로 열리는 경우가 있다.
이때는 쫄지 말고,
xml 파일을 package explorer 에서 우클릭 --> open with --> Android Layout Editor
로 하면 그래픽컬레이아웃 모드로 열린다.
하지만 이렇게 하면 모든 xml 파일을 일일히 다 이렇게 해줘야 한다.. ㅡㅡ; 짱 귀찮음..ㅜ
따라서 그렇게 하지 말고, package explorer 에서 프로젝트를 닫아(close Project) 버린 후 다시 연다. 이렇게 하면 모든 xml 파일이 Grapical Layout 모드로 열린다.
종종 Design 모드로 열리는 경우가 있다.
이때는 쫄지 말고,
xml 파일을 package explorer 에서 우클릭 --> open with --> Android Layout Editor
로 하면 그래픽컬레이아웃 모드로 열린다.
하지만 이렇게 하면 모든 xml 파일을 일일히 다 이렇게 해줘야 한다.. ㅡㅡ; 짱 귀찮음..ㅜ
따라서 그렇게 하지 말고, package explorer 에서 프로젝트를 닫아(close Project) 버린 후 다시 연다. 이렇게 하면 모든 xml 파일이 Grapical Layout 모드로 열린다.
이클립스 인코딩
각자 인코딩 방식을 다르게 지정해서 개발하다 보니 한글이 깨져버린다.. ;;
다음은 퍼온 것임... ;;



다음은 퍼온 것임... ;;
|
Workspace의 기본 텍스트 파일 인코딩 변경 - Work space 전체 설정
Window-Preference 메뉴를 선택한 후 아래와 같이 설정
Content Type 별로 인코딩 적용하기 - 특정 파일만 따로 지정
Window-Preference 메뉴를 선택한 후 아래와 같이 설정
개별 파일에 인코딩 적용하기

여기서 중요한 건 지원되는 게 없을 때... 쫄지 말고 그 Type을 그냥 타이핑 하면 된다.. Ex) MS949 가 없을 때.. other 창에 그냥 MS949를 쳐 넣는다.. 그럼 생긴다..ㅋ |
2012년 1월 25일 수요일
업데이트 내역 표시하기[퍼옴] - 안드로이드 펍
앱을 다운받아 사용하다가 업데이트를 하게 되면,
앱 중에는 어떤 것이 업데이트 되었는지 표시되지 않는 경우가 있습니다.
그나마 홈페이지에 연결되어 있어 조금 수고를 하는 경우 그 내역을 볼 수 있는 경우도 있지만,
아예 볼 수 없는 경우도 많이 있습니다.
사용자들이 어떤 업데이트가 되었는지 한눈에 알아볼 수 있다면 좋겠지요?
궁금한 사용자들을 위해 업데이트 내역을 표시해주는 것이 개발자의 의무(?)라고 생각합니다.
그래서 자동적으로 업데이트 코드를 출력해주는 코드를 소개드릴까 합니다.
01.SharedPreferences pref = getSharedPreferences("VER", 0);02. 03.try{04.PackageManager pm = this.getPackageManager();05.PackageInfo packageInfo = pm.getPackageInfo(getPackageName(), 0);06.int VERSION = packageInfo.versionCode;07.int old_Ver = pref.getInt("version", 0);08. 09.if(old_Ver<VERSION){10.TextView msg=new TextView(this);11.msg.setTextSize(TypedValue.COMPLEX_UNIT_SP,15);12.msg.setTextColor(0xffffffff);13.msg.setText(R.string.update);14.new AlertDialog.Builder(this)15..setTitle("업데이트 내역")16..setView(msg) 17..setPositiveButton("확인", null)18..show();19.SharedPreferences.Editor edit = pref.edit();20.edit.putInt("version", VERSION);21.edit.commit();22.}23.}24.catch(Exception e){}위와 같은 코드를 삽입하고 업데이트 후
R.string.update부분에 업데이트 내역 수정하고,
manifest파일의 버전번호를 올리면 자동적으로 처음 한번 사용자에게 업데이트 정보를 표시해주게 됩니다.
* 더 자세한 글은 http://comma.byus.net/blog/2younow/13 를 참조해주세요.
* 더 자세한 글은 http://comma.byus.net/blog/2younow/13 를 참조해주세요.
피드 구독하기:
글 (Atom)

