안드로이드 인앱 결제 최신버전(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 |