Java 为什么Android IAP正在初始化但不工作?

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

我正在使用此库在我的应用中实现应用内购买

我将此代码添加到我的gradle中

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);
  }  
}