2012-06-12 1 views
2

Android 라이센스를 구현하려고합니다. 지시에 따라 모든 것을 했어. 그러나 라이센스를 사용하지 않아 앱을 종료해야하는 경우 면제받을 수 있습니까?Android LicenseChecker에서 '서비스에 바인딩 할 수 없음'

06-12 09:11:31.384: E/LicenseChecker(383): Could not bind to service. 
06-12 09:11:36.884: E/ActivityThread(383): Activity com.myapp.main.mactivity has leaked ServiceConnection [email protected] that was originally bound here 
06-12 09:11:36.884: E/ActivityThread(383): android.app.ServiceConnectionLeaked: Activity com.myapp.main.mactivity has leaked ServiceConnection [email protected] that was originally bound here 
06-12 09:11:36.884: E/ActivityThread(383): at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:932) 
06-12 09:11:36.884: E/ActivityThread(383): at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:827) 
06-12 09:11:36.884: E/ActivityThread(383): at android.app.ContextImpl.bindService(ContextImpl.java:1082) 
06-12 09:11:36.884: E/ActivityThread(383): at android.content.ContextWrapper.bindService(ContextWrapper.java:370) 
06-12 09:11:36.884: E/ActivityThread(383): at com.google.android.vending.licensing.LicenseChecker.checkAccess(LicenseChecker.java:150) 

어떻게 될 수 있나요?

에서 onCreate 방법 내가 만드는 :

mHandler = new Handler(); 

// Try to use more data here. ANDROID_ID is a single point of attack. 
String deviceId = Secure.getString(getContentResolver(), Secure.ANDROID_ID); 

// Library calls this when it's done. 
mLicenseCheckerCallback = new MyLicenseCheckerCallback(); 
// Construct the LicenseChecker with a policy. 
mChecker = new LicenseChecker(
    this, new ServerManagedPolicy(this, 
     new AESObfuscator(SALT, getPackageName(), deviceId)), 
    BASE64_PUBLIC_KEY); 
doCheck(); 

및들의 OnDestroy :

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    mChecker.onDestroy(); 
} 

그래서이 예외가 정말 무엇을 의미하는지?

+0

최근 Android 마켓/Google Play 스토어 앱으로 실제 기기를 테스트하고 계신가요? –

+0

에뮬레이터로 테스트 중입니다. 해당 사용자가 라이센스가없는 것을 확인하려면 – Streetboy

+3

에뮬레이터에서 실행하면 라이센스가 부여되지 않는 것과 아무런 관련이 없습니다. 또한 에뮬레이터를 사용할 때이 오류가 발생하는 것으로 알려져 있습니다. 설정하려면 여기의 지침을 따르되 실제 장치에서는 더 나은 테스트를 수행하십시오. http://developer.android.com/guide/market/licensing/setting-up.html#test-env –

답변

2

방금이 문제도 다루었습니다. 4.0.4로 AVD Galaxy Nexus를 테스트했습니다.

나는 현재 활동의 컨텍스트를 사용하는 대신 getApplicationContext()를 사용하기 위해 다른 스레드의 제안을 시도했다. 그러나 그것은 도움이되지 않았습니다.

실제 장치로 전환해도 의견에서 언급 한대로 실제로 문제가 해결되었습니다.

  1. 은 구글 API를 기반으로 에뮬레이터를 사용 (AVD 관리자에서 구성) : 작동 할 수

    다른 옵션은 다음이다.

  2. 설정의 에뮬레이터에 Google 계정을 추가하십시오.
  3. Play 계정 개발자 콘솔에서 Android 라이선스에 대한 테스터 목록에 위의 계정이 있는지 확인하십시오.
1

대신 장치의 에뮬레이터를 사용하는 경우 :

  1. 이 에뮬레이터는 구글의 API가 아닌 안드로이드 API에 대한 실행되고 있는지 확인합니다. 가상 장치 관리자에서이 값을 설정할 수 있습니다
  2. 에뮬레이터가 올바른 API에서 실행되면 에뮬레이터를 연 다음 설정 -> 계정 추가로 이동하여 Gmail 테스트 계정으로 로그인하십시오 당신은 로그인 한 후) 적절한 라이센스 응답을 가지고
  3. 의 Google Play에서 설정하여 응용 프로그램을 실행하고 에뮬레이터

기본적인 문제에서 제대로 실행해야하면 로그인하지 않은 것입니다 에뮬레이터에서 응용 프로그램을 실행하려고하면 올바른 테스트 계정으로 이동하십시오.