2011-04-09 44 views
4

我試圖在基於Sample Application的應用中實施應用內結算。 但是bindService總是返回falseAndroid的應用內結算和bindService

這是我的。 AndroidManifest.xml中

<service android:name="tv.app.billing.BillingService" /> 

Preferences.java(需要開始從首屏購買):

protected void onCreate(Bundle savedInstanceState) { 
    mBillingService = new BillingService(); 
    mBillingService.setContext(this); // tried to use getApplicationContext also 

BillingService.java: 公共類BillingService有擴展服務實現ServiceConnection {

/** 
* Binds to the MarketBillingService and returns true if the bind 
* succeeded. 
* @return true if the bind succeeded; false otherwise 
*/ 
private boolean bindToMarketBillingService() { 
    try { 
     if (Debug.DEBUG) { 
      Log.i(TAG, "binding to Market billing service"); 
     } 
     boolean bindResult = bindService(
       new Intent(Consts.MARKET_BILLING_SERVICE_ACTION), 
       this, // ServiceConnection. 
       Context.BIND_AUTO_CREATE); 

     if (bindResult) { 
      return true; 
     } else { 
      Log.e(TAG, "Could not bind to service."); 
     } 
    } catch (SecurityException e) { 
     Log.e(TAG, "Security exception: " + e); 
    } 
    return false; 
} 

而在logcat中我看到:

WARN/ActivityManager(48): Unable to start service Intent { act=com.android.vending.billing.MarketBillingService.BIND }: not found 

什麼我需要在這裏糾正?

+1

奇怪,但它並不只在模擬器上工作和實際工作的設備上。可能,我應該等待服務啓動? – 2011-04-09 17:04:35

回答

8

好吧,它不能在模擬器上測試(因爲它沒有Android Market的?)。官方網站的 Testing In-app Billing節說

不能使用Android模擬器 測試應用內結算

1

您是否在清單中聲明瞭接收者? (source

<receiver android:name="BillingReceiver"> 
     <intent-filter> 
     <action android:name="com.android.vending.billing.IN_APP_NOTIFY" /> 
     <action android:name="com.android.vending.billing.RESPONSE_CODE" /> 
     <action android:name="com.android.vending.billing.PURCHASE_STATE_CHANGED" /> 
     </intent-filter> 
    </receiver> 

引用:

在示例應用程序, BillingReceiver是 的BroadcastReceiver該處理 廣播意圖從Android 市場應用和BillingService有 是服務發送請求到 Android Market應用程序

+0

是的,它在那裏。 – 2011-04-09 17:03:00

+0

恥辱:-)還有'INTERNET'權限? – 2011-04-09 17:06:11

+0

是的(但根據示例應用程序不需要;) – 2011-04-09 17:07:28

1

請把bindToMarketBillingService()onServiceConnected

因爲當它完成綁定,它會調用倒流,回到IBinder到您的連接。

我100%肯定這會工作!

+0

bindToMarketBillingService()其中是方法 – NareshRavva 2015-01-06 14:08:49