为了在Android沙箱中获得订阅相关数据,您需要先解除其绑定,然后再查询数据。以下是一些样例代码示例,可以用来解决这个问题:
// 解绑之前的订阅
final String subscriptionId = "your_subscription_id";
final BillingClient billingClient = BillingClient.newBuilder(context).enablePendingPurchases().build();
billingClient.startConnection(new BillingClientStateListener() {
@Override
public void onBillingSetupFinished(BillingResult billingResult) {
if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
billingClient.queryPurchases(BillingClient.SkuType.SUBS).getPurchasesList()
.stream().filter(p -> p.getSkus().contains(subscriptionId))
.forEach(p -> {
billingClient.acknowledgePurchase(AcknowledgePurchaseParams.newBuilder()
.setPurchaseToken(p.getPurchaseToken()).build(), new AcknowledgePurchaseResponseListener() {
@Override
public void onAcknowledgePurchaseResponse(BillingResult billingResult) {
if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
Log.d(TAG, "Consumed purchase for subscription id: " + subscriptionId);
} else {
Log.e(TAG, "Failed to acknowledge purchase for subscription id: " + subscriptionId);
}
}
});
});;
} else {
Log.e(TAG, "Failed to connect to billing client");
}
}
@Override
public void onBillingServiceDisconnected() {
Log.e(TAG, "Billing client disconnected");
}
});
// 查询有关订阅的数据
billingClient.queryPurchaseHistory(BillingClient.SkuType.SUBS).getPurchaseHistoryRecordList().stream()
.filter(p -> p.getSkus().contains(subscriptionId))
.forEach(p -> Log.d(TAG, "Got purchase info for subscription id: " + subscriptionId + " with purchase time: " + p.getPurchaseTime()));
通过这些代码,您可以在Android沙箱中成功查询到订阅相关的数据。
下一篇:Android设备-远程镜像