Java 如何使用getPurchases()-Android

Java 如何使用getPurchases()-Android,java,android,in-app-purchase,sharedpreferences,in-app-billing,Java,Android,In App Purchase,Sharedpreferences,In App Billing,我已成功在我的应用中实施应用内计费。IAP正在成功运行,我已经对其进行了测试,以确保其正常运行。 当用户单击按钮时,他们必须进行IAP才能继续。但是,每次用户单击按钮时,它都会启动IAP,即使他们已经进行了IAP。我希望我的IAP是非消耗品。目前,我将IAP存储在SharedReferences中,但如果用户重新安装应用程序,他们将丢失IAP。 那么,如何在我的onCreate或onClick方法上使用getPurchases()或restoreTransactions()来检查用户是否

我已成功在我的应用中实施应用内计费。IAP正在成功运行,我已经对其进行了测试,以确保其正常运行。

当用户单击按钮时,他们必须进行IAP才能继续。但是,每次用户单击按钮时,它都会启动IAP,即使他们已经进行了IAP。我希望我的IAP是非消耗品。目前,我将IAP存储在
SharedReferences
中,但如果用户重新安装应用程序,他们将丢失IAP。

那么,如何在我的
onCreate
onClick
方法上使用
getPurchases()
restoreTransactions()
来检查用户是否购买了特定项目?我在互联网上搜索过很多样本,但似乎都不起作用,也许是我误解了。

如果您需要我发布任何代码,请询问,我将更新我的帖子。

使用此库:

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" />

注意:onPurchaseHistoryRestored仅在您初始化BillingProcessor时第一次调用

他们有很多方法可以检查onPurchaseHistoryRestored(),但这是我的意见。我用..解决了这个问题。。 您可以使用此代码检查横断面详图

@Override
    public void onPurchaseHistoryRestored() {
        /*
         * Called when purchase history was restored and the list of all owned PRODUCT ID's
         * was loaded from Google Play
         */

        // Check whether 'premium_id' has previously been purchased:
        TransactionDetails premiumTransactionDetails = bp.getPurchaseTransactionDetails("premium_id");

        if (premiumTransactionDetails == null) {
            Log.i(TAG, "onPurchaseHistoryRestored(): Havn't bought premium yet.");
            purchasePremiumButton.setEnabled(true);
        }
        else {
            Log.i(TAG, "onPurchaseHistoryRestored(): Already purchases premium.");

            purchasePremiumButton.setText(getString(R.string.you_have_premium));
            purchasePremiumButton.setEnabled(false);
            statusTextView.setVisibility(View.INVISIBLE);
        }
    }
第二个是检查“产品id”。检查下面的代码

if(bp.isPurchased(REMOVE_ID_SKU)){
if (bp.loadOwnedPurchasesFromGoogle()) {
Toast.makeText(this, R.string.subs_updated, Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(this, R.string.no_purchases, Toast.LENGTH_SHORT).show();
}
}
if(bp.isPurchased(REMOVE_ID_SKU)){
if (bp.loadOwnedPurchasesFromGoogle()) {
Toast.makeText(this, R.string.subs_updated, Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(this, R.string.no_purchases, Toast.LENGTH_SHORT).show();
}
}