안드로이드 인앱 결제 최신버전(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 클래스를 수정해주면 해결됩니다. IapHelper.java 클래스 내에서 dispose() 메소드 내의 코드를 수정 해 주어야 합니다. 아래 코드의 7열부터 11열까지를 참고하시면 되겠습니다.
public void dispose() { logDebug("Disposing."); mSetupDone = false; if (mServiceConn != null) { logDebug("Unbinding from service."); // if (mContext != null) mContext.unbindService(mServiceConn); // 원래 코드는 위와 같을 것입니다만 이 if문에 mService != null 을 추가 해 주면 됩니다. if (mContext != null && mService != null) mContext.unbindService(mServiceConn); // 이렇게 수정 해 주시면 됩니다. } mDisposed = true; mContext = null; mServiceConn = null; mService = null; mPurchaseListener = null; }
위 코드와 같이 dispose() 메소드를 수정해주고 나면 더 이상 IllegalArgumentException이 발생하지 않게 됩니다.
'Development Note > JAVA' 카테고리의 다른 글
[안드로이드] onPurchaseFinished() 메서드가 호출되지 않는 경우 (3) | 2014.07.25 |
---|---|
[안드로이드] 코드만으로 버튼 만들기 (2) | 2014.07.23 |
[안드로이드] ClassNotFoundException 발생시 해결방법 (1) | 2014.06.25 |
[안드로이드] 안드로이드 키보드 완료 버튼 클릭 시 이벤트 (1) | 2014.06.24 |
[안드로이드] 안드로이드 SDK 업데이트후 ADT 실행 오류 (2) | 2014.06.21 |