我正在尝试实施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" />
到我的清单
答案 0 :(得分:0)
你正在以艰难的方式去做。有关准备in app billing的信息,请参阅此Google指南。 Google有一个名为IabHelper的开源类,它可以为你处理Iab,并且已经看过很多迭代,所以它会优于你现在创建的。
您还可以看到this code.google link