본문 바로가기

Development Note/JAVA

[안드로이드] onPurchaseFinished() 메서드가 호출되지 않는 경우 인앱결제 v3(In-App Billing, v3)가 문제가 종종 발견되는군요, 이번에 포스팅할 내용은 문제라고 하기엔 좀 그렇지만 인앱결제 구현시 빼먹기 쉬운 내용입니다. 처음 인앱결제를 구현하시는 분들은 인앱결제에 관련된 또다른 이슈를 해결하는 방법도 참고하시면 좋을 듯 합니다. 2014/07/02 - [Development Note/JAVA] - [안드로이드] 인앱결제 (In-App Billing, v3) IllegalArgumentException 해결방법 In-App Billing v3를 구현하다 보면 IapHelper.OnIabPurchaseFinished() 메소드를 오버라이드하게 됩니다. 이 메소드는 인앱구매창에서 인앱구매가 성공(혹은 실패)한 경우에 호출되는 콜백베소드입니다. 인앱구매가 완.. 더보기
[안드로이드] 코드만으로 버튼 만들기 안드로이드에서 레이아웃 위에 버튼을 만들기 위해서 보통 xml 편집기를 사용합니다. 하지만 때때로 xml편집기는 너무 느리고, 짜증나게 하죠. 안드로이드 앱의 레이아웃상에 코드만을 이용해서 간단한 버튼을 생성하는 법을 알아보겠습니다. onCreate(){ Button mButton = new Button(this); //버튼을 선언 LayoutParams pm = new LayoutParams(); //레이아웃파라미터 생성 pm.width = LayoutParams.WRAP_CONTENT; //버튼의 너비를 설정(픽셀단위로도 지정가능) pm.height = LayoutParams.WRAP_CONTENT; //버튼의 높이를 설정(픽셀단위로도 지정 가능) pm.gravity = Gravity.CENTER; .. 더보기
[안드로이드] 인앱결제 (In-App Billing, v3) IllegalArgumentException 해결방법 안드로이드 인앱 결제 최신버전(v3)을 앱에 적용하면 액티비티를 종료할 때 다음과 같은 에러 메시지를 볼 수 있습니다. java.lang.RuntimeException: Unable to destroy activity {com.package.application/com.package.applicationname.MainActivity}: java.lang.IllegalArgumentException: Service not registered: com.package.applicationname.IabHelper$1@b1d79398 //가독 편의성을 위해서 줄바꿈을 했습니다 해당 IllegalArgumentException은 인앱결제가 적용된 앱 내의 IabHelper.java 클래스를 수정해주면 해결됩니다.. 더보기
[안드로이드] ClassNotFoundException 발생시 해결방법 안드로이드 개발은 보통 이클립스나 이클립스의 리팩키지 버전인 ADT(Android Developer Tools)로 진행하게 됩니다. 이클립스나 ADT에서 안드로이드 프로젝트의 작업을 진행하다가 다음의 메시지와 함께 오류가 발생하는 경우가 있습니다. java.lang.ClassNotFoundException:클래스이름 해석하자면 클래스를 찾을 수 없는 경우에 발생하는 예외입니다. 그런데 해당 클래스가 버젓이 패키지 안에 존재하고 컴파일도 문제없이 이루어졌는데 이런 오류가 난다면 왜일까요? 대부분의 경우 다음 두 가지 방법 중의 하나로 해결할 수 있습니다. 첫번째 방법: 이클립스 메뉴의 [Project > Clean > 해당 프로젝트 체크 > OK] 두 번째 방법: [프로젝트에서 마우스 오른쪽 클릭 > Pr.. 더보기
[안드로이드] 안드로이드 키보드 완료 버튼 클릭 시 이벤트 안드로이드 개발을 하다 보면 키보드 액션에 특정 이벤트를 주고 싶은 때가 있습니다. 이를테면 키보드의 완료 버튼을 누르면 키보드가 사라지면서 다음 화면으로 넘어간다던지 하는 등의 이벤트죠. 이런 경우에 사용할 수 있는 안드로이드 API가 있습니다. OnEditorActoinListener 가 그것입니다. OnEditorActionListener는 네 가지 단계에 걸쳐 프로젝트에 적용할 수 있습니다. 1. 해당 클래스에 OnEditorActionListener 인터페이스를 implement한다(OnEditorActionListener를 import한다). 2. onEditorAction() 메소드를 오버라이드한다. 3. onEditorAction() 메소드 내에 조건을 주고, 원하는 이벤트를 작성한다. 4.. 더보기
[안드로이드] 안드로이드 SDK 업데이트후 ADT 실행 오류 ADT(혹은 이클립스)를 이용해서 안드로이드 앱 개발을 하는 분들에게 유용한 문제 해결 팁입니다. 안드로이드 SDK를 최신 버전으로 업데이트 할 경우, ADT는 [Help > Check for Updates] 항목을 통해 ADT를 업데이트 하라는 다이얼로그를 출력합니다. 그래서 지시한 대로 [Help > Check for Updates]를 클릭하면 업데이트할 항목이 없다는 의미로 다음 다이얼로그를 출력합니다. No updates were found 그리고 팩키지 로드가 제대로 이루어지지 않아 멀쩡하던 프로젝트는 에러투성이가 되어 있습니다. 이와 같이 SDK는 업데이트 했으나 ADT가 업데이트 되지 않는 경우, [Help > Install New Software] 항목으로 갑니다. 그리고 [Work wit.. 더보기
[안드로이드] 액티비티 화면을 가로, 혹은 세로로 고정하기 안드로이드 앱을 개발하다 보면 부득이하게 액티비티 화면을 가로, 혹은 세로로 고정해야 할 때가 있습니다. 예를 들자면 게임의 경우는 대부분 가로모드로 고정이 되어 실행되죠. 물론 액티비티 화면을 세로 모드로 고정해야 할 때도 있습니다. 화면의 레이아웃이 가로, 혹은 세로 모드에 최적화되어 있는 경우에는 부득이하게 화면의 회전을 강제로 막아야만 합니다. 가로 모드는 Landscape, 세로 모드는 Portrait가 정식 명칭입니다. 안드로이드 액티비티의 화면을 Landscape 혹은 Portrait로 고정하고 싶은 경우, 두 가지 방법이 있습니다. 첫번째는 Manifest 파일에서 Activity에 screenOrientation 속성을 주는 방법이고, 두번째는 안드로이드 액티비티의 onCreate() 메.. 더보기
이클립스(Eclipse) 'could not write file: ~.classpath' 에러(Error) 해결방법 이클립스(Eclipse) 'could not write file: ~.classpath' 에러(Error) 해결방법 [ENG] How to solve the problem: 'could not write file: ~.classpath' 이전 포스트에서도 밝혔듯, 저는 맥 플랫폼에서 안드로이드 개발을 쭉 해 왔습니다. 이번에 안드로이드 프로젝트들을 윈도우 플랫폼으로 마이그레이션 하는 과정에서 몇 가지 이슈가 발생했는데요, import 과정에서 발생하는 다음과 같은 에러가 그 중 하나입니다. [ENG] As I mentioned at last post, I am using Mac for Android development. Recently I tried to migrate every android proj.. 더보기
이클립스(Eclipse) 'Failed to create the java virtual machine' 에러(Error) 이클립스 실행 시 'Failed to create the java virtual machine 에러가 뜰 때 해결 방법(Windows).(ENG) How to fix 'Failed to create the java virtual machine' error in Eclipse. 이클립스 설치 폴더를 열고 Eclipse.ini를 워드패드 등으로 열어줍니다.(ENG) Open eclipse installed folder, and open Eclipse.ini through the app like word pad. 그리고 다음을 추가해주면 끝.(ENG) And just add followings. 다음(followings): -vmC:\Program Files\Java\(replace-to-your-java-v.. 더보기
안드로이드 개발환경 준비하기 [How to prepare Android Development environment] 본래 정석으로 정해진 것은 아니지만, 통상적으로 안드로이드 앱 개발은 윈도우에서 하는 경우가 많습니다. iOS 개발이 맥에서 이루어지는 것처럼 뭔가 자연스럽다고 할까요? (iOS는 맥에서만 개발이 가능합니다) 여러 개발자들의 이야기를 들어보면 그냥 그게 편하다더군요. 제 경우에는 맥에서 안드로이드 개발을 해 왔습니다. 특별히 불편한 점은 못 느꼈지만, 다들 한다길래 저도 윈도우로 안드로이드 개발 환경을 옮기려고 합니다. 이제 저의 맥에서는 iOS 개발을 준비하려고 하죠. 개발 환경을 분리한다고 할까요? 별로 큰 의미는 없지만 그냥 이원화하고 싶었습니다. [ENG] There's no rules, but normally android developers use windows-based computer. I.. 더보기