绑定Google InAppBillingService时出现问题

时间:2015-01-21 21:26:09

标签: java android in-app-billing

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

中的引用

我按照说明操作,但遇到了绑定InAppBillingService的问题。 似乎我的ServiceConnection的onServiceConnected(...)方法永远不会被调用,并且该方法负责创建我的InAppBillingService接口。

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

这是我的班级:

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" />

到我的清单

1 个答案:

答案 0 :(得分:0)

你正在以艰难的方式去做。有关准备in app billing的信息,请参阅此Google指南。 Google有一个名为IabHelper的开源类,它可以为你处理Iab,并且已经看过很多迭代,所以它会优于你现在创建的。

您还可以看到this code.google link