본문 바로가기

Development/Android

(21)
Thread 와 Database 의 Connection 문제. 서비스 개발이 거의 막바지에 다달았습니다. Server 쪽 개발하랴 Client 쪽 개발하랴 눈코뜰새 없이 바빴습니다만 결과물들을 보니 고생한 보람을 느낄 수 있네요. Android Client 의 형태는 탭 view 들로 되어 있으며 전체적인 형태는 카톡을 상상하시면 됩니다. 탭들이 화면 하단에 4개 있으며 해당 탭들마다 다른 view 의 내용들을 출력해주는 방식입니다. server 와 통신을 하면서 local database 에 데이터를 가져오고 보내주면서 그 데이터들을 Thread 로 처리하는 방식인데 client 에서 많은 thread 를 실행하다 보니 개발도중에 자꾸 여러가지 문제점들이 발생했었습니다. 가장 대표적인 문제점이 thread 의 database 사용에 따른 connection 과 l..
안드로이드 WebChromeClient 에서 Web 브라우저 이벤트 구현하기. 안드로이드의 WebChromeClient 에서 'alert' 이나 '윈도우 닫기' 등의 Web 브라우저 이벤트 구현하기. WebViewClient 가 아닌 WebChromClient 를 상속받는다. .......... WebView mWeb; .......... mWeb.setWebChromeClient(new MyWebChromeClient()); .......... private class MyWebChromeClient extends WebChromeClient { @Override public boolean onJsAlert(WebView view, String url, String message, JsResult result) { final JsResult finalRes = result; ne..
안드로이드 WebView 화면에서 전화걸기 오작동 막기. 안드로이드 WebView 화면에서 전화번호와 비슷한 98217398217 등의 숫자로만 이루어진 컨텐츠가 있을때 터치하게 되면 전화걸기 기능으로 바로 연결되는 오작동 막기. ........ WebView mWeb; ........ mWeb.setWebViewClient(new DongYang()); ........ private class DongYang extends WebViewClient { public boolean shouldOverrideUrlLoading(WebView view, String url) { if (url.startsWith("mailto:") || url.startsWith("tel:")) { return false; } view.loadUrl(url); return true;..
가로, 세로로 화면 변경될때 설정 유지하기. manifest 파일을 수정한다. android:configChanges="orientation"
안드로이드 또는 아이폰에서 서버로 파일을 올릴때 리턴값(스트링)을 받아오기. 안드로이드, 아이폰에서 서버로 httpClient 를 이용해서 그림파일을 보내고 그 결과값을 받아와야 할 일이 생겼다. 스트링으로 받아오려면 프레임웤에 REST 를 올려서 json 으로 받는게 가장 심플하고 좋겠지만 낼모레 테스트하는 마당에 그러기엔 너무 귀찮고.. 해서 약간 꼼수를 썼다. 서버의 컨트롤러 메소드에서 ModelAndView 를 리턴할때 jsp 페이지를 하나 만들어 두고 그 jsp 페이지에 리턴할 내용만 넘겨주면 된다. 아주 심플하다. 대신 jsp 페이지의 내용엔 오로지 리턴받기 원하는 string 만 들어가야 한다. 예를 들면, 안드로이드에서 ByteArrayOutputStream bos = new ByteArrayOutputStream(); signature.compress(Bitmap..
Error generating final archive: Debug Certificate expired 오랜만에 mac 에서 안드로이드 앱을 개발하려던 도중에 오류가 발생한다. 분명 소스상에는 아무런 오류가 없는데 빨간 딱지가 뜨는데 별다른 오류내용을 출력하지는 않는다. 출력창에 나오는 오류메시지는 딱 한줄. Error generating final archive: Debug Certificate expired.. 어쩌고 저쩌고. 처음 안드로이드 SDK 를 설치하면 생성되는 debug.keystore 의 유효기간이 1년이다. mac 에서 한달만에 이클립스를 띄우니 마침 그기간 사이에 key 유효기간이 expire 되어 버린것이 원인이었다. 해당 파일을 찾아서 삭제한다. (/Usr/xxxx/.android/debug.keystore 의 파일을 삭제하고 난 뒤 다시 갱신한다.) 파일을 삭제한 뒤 다시 프로젝트..
파티톡 1.0.1 업그레이드. 지난주에 출시한 파티톡을 1.0.1 버전으로 업그레이드 했다. 기존 버전에 비해서 네트워크 부하를 좀 줄이고 초대전화번호의 예외처리 로직을 좀 더 추가했다. 생각하지 못한 여러가지 변수가 발견되었다. 기존에 로그를 남기는 로직을 쓰레드로 돌렸다. 다음 로직을 실시간으로 따로 돌릴수 있어서 속도가 조금 향상되었다. 1.0.1 버전으로 업그레이드 한 뒤의 소감은.. 실제 체감 속도가 조금 빨라졌다. 앱이 좀 더 안정감있게 실행된다. 아직은 홍보부족으로 회원수가 얼마 없지만, 조만간에 많이 불어날거라 생각한다..
목록에서 링크걸기. 안드로이드에서 링크처리는 의외로 간단하다. 예를 들어서 텍스트뷰에서의 링크처리는 XML attribute 에서 autoLink="all" 정의만 해주면 웹사이트, 이메일, 전화 등등을 자동으로 처리해준다. 하지만 일반 액티비티가 아닌 어댑터를 확장한 클래스의 경우는 얘기가 달라진다. 우선, 02-09 14:40:26.263: ERROR/AndroidRuntime(8515): Uncaught handler: thread main exiting due to uncaught exception 02-09 14:40:26.302: ERROR/AndroidRuntime(8515): android.util.AndroidRuntimeException: Calling startActivity() from outside ..