问题描述
我正在使用此库在我的应用程序中实现应用程序购买。
https://github.com/anjlab/android-inapp-billing-v3
repositories {
mavenCentral()
}
dependencies {
implementation 'com.anjlab.android.iab.v3:library:1.0.44'
}
我添加了权限。
<uses-permission android:name="com.android.vending.BILLING" />
我声明了变量
BillingProcessor bp;
在setContentView之后,我在onCreate方法中使用(测试过)bp
setContentView(R.layout.activity_main);
bp = new BillingProcessor(this,"x",null,new BillingProcessor.IBillingHandler() {
@Override
public void onProductPurchased(@NonNull String productId,@Nullable TransactionDetails details) {
Log.d("purchase2","purchased");
}
@Override
public void onBillingError(int errorCode,@Nullable Throwable error) {
Log.d("purchase2","error");
}
@Override
public void onBillingInitialized() {
Log.d("purchase2","initialized");
}
@Override
public void onPurchaseHistoryRestored() {
Log.d("purchase2","historyrestored");
}
});
bp.purchase(this,"y");
该代码无法在ProductPurchased方法上运行。它仅运行onBillingInitialized方法。我看上去很冗长。当我看到已初始化行时,没有关于已购买的行。
结果,我该如何解决我的问题?为什么不起作用?
X和Y值正确,我在Google Play控制台中对其进行了检查。
解决方法
我认为你应该打电话
bp.initialize();
在这样的oncreate中
setContentView(R.layout.activity_main);
bp = new BillingProcessor(this,"x",null,new BillingProcessor.IBillingHandler() {
@Override
public void onProductPurchased(@NonNull String productId,@Nullable TransactionDetails details) {
Log.d("purchase2","purchased");
}
@Override
public void onBillingError(int errorCode,@Nullable Throwable error) {
Log.d("purchase2","error");
}
@Override
public void onBillingInitialized() {
Log.d("purchase2","initialized");
}
@Override
public void onPurchaseHistoryRestored() {
Log.d("purchase2","historyrestored");
}
});
bp.initialize();
并致电
bp.purchase(this,"y");
在按钮单击事件中。
您还应该覆盖Activity的onActivityResult方法:
@Override
protected void onActivityResult(int requestCode,int resultCode,Intent data) {
if (!bp.handleActivityResult(requestCode,resultCode,data)) {
super.onActivityResult(requestCode,data);
}
}
祝你好运!