2012-06-12 98 views
2

我想實現Android許可。通過指示做了一切。但是,當需要關閉應用程序由於un license的使用。我得到免除: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 Market/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,而不是Android的API的運行。您可以在虛擬設備管理器中對此進行設置
  2. 一旦您的仿真器運行在正確的API上,請打開仿真器,然後轉到設置 - >添加帳戶並使用Gmail測試帳戶登錄(與您應該擁有的帳戶相同)在谷歌成立播放有適當的許可證響應)
  3. 一旦你登錄,運行你的應用程序,它應該在模擬器上

的基本問題正常運行是,你還沒有登錄當您嘗試在模擬器上運行應用程序時,將其轉換爲有效的測試帳戶。