Android:如何使用 Android billing 4.0.0 恢复之前购买的商品
Android: How to restore previous purchased using Android billing 4.0.0
我正在尝试创建一个“恢复”按钮(就像在 iOS 中一样)以便用户可以恢复他以前的购买。我正在使用下面的代码,但 List<Purchase> list
返回是空的。我使用信用卡进行了实际购买,然后我删除了该应用程序并从 Google Play 商店重新安装,但我无法使用“恢复”按钮。这是我用于“恢复”按钮的代码:
private void restorePreviousPuchases () {
billingClient.queryPurchasesAsync(BillingClient.SkuType.INAPP, new PurchasesResponseListener() {
@Override
public void onQueryPurchasesResponse(@NonNull BillingResult billingResult, @NonNull List<Purchase> list) {
if (list != null) {
for (Purchase purchase : list) {
ArrayList<String> skus = purchase.getSkus();
if (skus != null) {
for (String sku : skus) {
setPurchasedItem(sku);
}
}
}
} else {
Log.d("DEBUGGING...", "onCreate: NULL purchaseList" );
}
}
});
}
我刚遇到同样的问题。经过一番调查,这似乎是一个已知的错误。
但是,如果您先启动您的计费客户端,然后调用 queryPurchase,它就可以工作。只是不要将它放在 oncreate 中(对我不起作用)。
BillingClient billingClient;
public void setupBillingClient(){
billingClient = BillingClient.newBuilder(mContext)
.setListener(purchasesUpdatedListener)
.enablePendingPurchases()
.build();
startConnection();
}
public void queryPurchases(Boolean consume){
if (billingClient!=null) {
billingClient.queryPurchasesAsync(BillingClient.SkuType.INAPP, new PurchasesResponseListener() {
@Override
public void onQueryPurchasesResponse(@NonNull BillingResult billingResult, @NonNull List<Purchase> list) {
for (int i = 0; i < list.size(); i++){
consumePurchase(list.get(i));
}
}
});
}
}
我正在尝试创建一个“恢复”按钮(就像在 iOS 中一样)以便用户可以恢复他以前的购买。我正在使用下面的代码,但 List<Purchase> list
返回是空的。我使用信用卡进行了实际购买,然后我删除了该应用程序并从 Google Play 商店重新安装,但我无法使用“恢复”按钮。这是我用于“恢复”按钮的代码:
private void restorePreviousPuchases () {
billingClient.queryPurchasesAsync(BillingClient.SkuType.INAPP, new PurchasesResponseListener() {
@Override
public void onQueryPurchasesResponse(@NonNull BillingResult billingResult, @NonNull List<Purchase> list) {
if (list != null) {
for (Purchase purchase : list) {
ArrayList<String> skus = purchase.getSkus();
if (skus != null) {
for (String sku : skus) {
setPurchasedItem(sku);
}
}
}
} else {
Log.d("DEBUGGING...", "onCreate: NULL purchaseList" );
}
}
});
}
我刚遇到同样的问题。经过一番调查,这似乎是一个已知的错误。
但是,如果您先启动您的计费客户端,然后调用 queryPurchase,它就可以工作。只是不要将它放在 oncreate 中(对我不起作用)。
BillingClient billingClient;
public void setupBillingClient(){
billingClient = BillingClient.newBuilder(mContext)
.setListener(purchasesUpdatedListener)
.enablePendingPurchases()
.build();
startConnection();
}
public void queryPurchases(Boolean consume){
if (billingClient!=null) {
billingClient.queryPurchasesAsync(BillingClient.SkuType.INAPP, new PurchasesResponseListener() {
@Override
public void onQueryPurchasesResponse(@NonNull BillingResult billingResult, @NonNull List<Purchase> list) {
for (int i = 0; i < list.size(); i++){
consumePurchase(list.get(i));
}
}
});
}
}