4

私は次のコードを使用しています:

public class MyBillingService extends Service implements ServiceConnection
{
    String TAG = "MyBillingService";

    @Override
    public void onCreate() 
    {
        super.onCreate();
        Log.i(TAG, "onCreate");

        try {
            boolean bindResult = getBaseContext().bindService(
                new Intent(IMarketBillingService.class.getName()), this, Context.BIND_AUTO_CREATE);
            if (bindResult) {
                Log.i(TAG, "Service bind successful.");
            } else {
                Log.e(TAG, "Could not bind to the MarketBillingService.");
            }
        } catch (SecurityException e) {
            Log.e(TAG, "Security exception: " + e);
        }
    }
}

私も追加しましたIMarketBillingService.aidlが、それでも次のように表示されます:

MarketBillingService にバインドできませんでした

私の間違いを指摘できますか?

4

2 に答える 2

0

これが問題の原因かどうかはわかりませんが、getBaseContext() で bindService() を使用しています。サービス インスタンスで bindService() を呼び出さない理由はありますか? これがサンプル サービスの機能です。

基本コンテキストはほとんど不要であり、一般的なアドバイスでは使用されていないようです。他の質問を参照してください: Context を取得するさまざまな方法の違いは何ですか?

それに加えて、Android マーケット アプリの最新 (または少なくとも最近) のバージョンがデバイスにインストールされている必要があります。

マーケット アプリがアプリ内課金をサポートしているかどうかをテストする方法があり、アプリ内課金リファレンスで説明されています。そのチェックをする価値があると思います。

于 2011-04-08T07:57:56.270 に答える
0

システムがクリーンインストールされた古いAndroidデバイスでテストしていました。これには、Google マーケット アプリのコピーがありませんでした (ハット ヒント @sstn)。

そこで、Google アカウントでログインしてから、マーケットを立ち上げました。これにより、条件に同意するように促され、Google Play アプリがアプリケーションのリストに表示されました。

次に、アプリを削除して再インストールすると、サービスに正しくバインドされました!

于 2012-04-19T11:25:12.533 に答える