绑定问题 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 并且已经进行了多次迭代,因此它将比您现在创建的更好。
我正在尝试实施 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 并且已经进行了多次迭代,因此它将比您现在创建的更好。