绑定问题 Google InAppBillingService

Problems binding Google InAppBillingService

我正在尝试实施 In App Billing 使用来自 here

的参考

我按照说明进行了操作,但是 运行 在绑定 InAppBillingService 时遇到了麻烦。 似乎我的 ServiceConnection 的 onServiceConnected(...) 方法从未被调用,并且该方法负责创建我的 InAppBillingService 接口。

此外,context.bindService(serviceIntent, serviceConnection, Context.BIND_AUTO_CREATE) returns 每次都是错误的,表明存在某种问题。可能由于某种原因 InAppBilling 不可用,isBillingSupported(...) 返回 false。我没有使用模拟器。

这是我的 class :

public class GoogleShop extends Shop {

    private ServiceConnection serviceConnection;
    private IInAppBillingService service;

    public GoogleShop() {
        this.serviceConnection = new ServiceConnection() {
            @Override
            public void onServiceDisconnected(ComponentName name) {
                service = null;
            }

            @Override
            public void onServiceConnected(ComponentName name, IBinder binder) {
                service = IInAppBillingService.Stub.asInterface(binder);
            }
        };
    }

    public void bindService(Context context) {
        Intent serviceIntent = new Intent("com.android.vending.billing.InAppBillingService.BIND");
        serviceIntent.setPackage("com.android.vending");

        System.out.println("InAppBillingAvailable : " + GoogleShop.isBillingAvailable(context));
        if (context.bindService(serviceIntent, serviceConnection, Context.BIND_AUTO_CREATE))
            return;
        else
            throw new RuntimeException("BindService returned false");
    }

    public ServiceConnection service() {
        return serviceConnection;
    }

    public static boolean isBillingAvailable(Context context) {
        final PackageManager packageManager = context.getPackageManager();
        final Intent intent = new Intent("com.android.vending.billing.InAppBillingService.BIND");
        List<ResolveInfo> list = packageManager.queryIntentServices(intent, 0);
        return list.size() > 0;
    }
}

还有,我没忘记补充

<uses-permission android:name="com.android.vending.BILLING" />

到我的清单

你做得很辛苦。请参阅此 Google 准备指南 in app billing。 Google 有一个名为 IabHelper 的开源软件 class,它可以为您处理 Iab 并且已经进行了多次迭代,因此它将比您现在创建的更好。

也可以看到this code.google link