为什么 Android IAP 初始化但不工作?
Why Android IAP initializing but not working?
我正在使用这个库在我的应用中实现应用内购买。
https://github.com/anjlab/android-inapp-billing-v3
我将此代码添加到我的 gradle。
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");
代码没有 运行 onProductPurchased 方法。它只有 运行s onBillingInitialized 方法。我看起来很冗长 logcat。当我看到 initialized 行时,没有关于 purchased 的行。
因此,我该如何解决我的问题?为什么不起作用?
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, resultCode, data);
}
}
祝你好运!
我正在使用这个库在我的应用中实现应用内购买。
https://github.com/anjlab/android-inapp-billing-v3
我将此代码添加到我的 gradle。
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");
代码没有 运行 onProductPurchased 方法。它只有 运行s onBillingInitialized 方法。我看起来很冗长 logcat。当我看到 initialized 行时,没有关于 purchased 的行。
因此,我该如何解决我的问题?为什么不起作用?
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, resultCode, data);
}
}
祝你好运!