Java 为什么Android IAP正在初始化但不工作?
我正在使用此库在我的应用中实现应用内购买 我将此代码添加到我的gradle中Java 为什么Android IAP正在初始化但不工作?,java,android,in-app-purchase,google-play-services,in-app-billing,Java,Android,In App Purchase,Google Play Services,In App Billing,我正在使用此库在我的应用中实现应用内购买 我将此代码添加到我的gradle中 repositories { mavenCentral() } dependencies { implementation 'com.anjlab.android.iab.v3:library:1.0.44' } 我添加了许可 <uses-permission android:name="com.android.vending.BILLING" /> 我在setConte
repositories {
mavenCentral()
}
dependencies {
implementation 'com.anjlab.android.iab.v3:library:1.0.44'
}
我添加了许可
<uses-permission android:name="com.android.vending.BILLING" />
我在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方法上运行。它仅在BillingInitialized方法上运行。我看起来像个冗长的罗格特。当我可以看到初始化的行时,没有关于购买的的行
因此,我如何解决我的问题?为什么它不起作用
X和Y值是正确的,我在Google Play控制台中检查了它们。我想你应该打电话给我
bp.initialize();
就这样创造出来的
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(本“y”)代码>
在按钮点击事件中
您还应该重写活动的onActivityResult方法:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (!bp.handleActivityResult(requestCode, resultCode, data)) {
super.onActivityResult(requestCode, resultCode, data);
}
}
祝你好运 您是否启动了计费流程?Billing flow将在调用PurchasePurchasePurchased后启动屏幕以购买SKU。如何启动Billing flow?我在购买之前尝试了initialize()方法,出现了相同的情况。只调用初始化的方法。为什么需要点击按钮?我只是想测试,所以我在onCreate中使用了它。如果没有按钮单击事件,它不工作吗?唯一的修改是将bp.purchase添加到onclick方法中。那么,它的工作没有任何问题!
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (!bp.handleActivityResult(requestCode, resultCode, data)) {
super.onActivityResult(requestCode, resultCode, data);
}
}