在Android中,检查应用内购买状态的最佳实践是通过Google Play Billing库来实现。以下是一个包含代码示例的解决方法:
dependencies {
implementation 'com.android.billingclient:billing:3.0.0'
}
private BillingClient billingClient;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 创建BillingClient实例
billingClient = BillingClient.newBuilder(this)
.setListener(purchasesUpdatedListener)
.enablePendingPurchases()
.build();
// 连接到Google Play
billingClient.startConnection(new BillingClientStateListener() {
@Override
public void onBillingSetupFinished(BillingResult billingResult) {
if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
// 连接成功,可以开始查询购买状态
queryPurchases();
}
}
@Override
public void onBillingServiceDisconnected() {
// 连接断开,可以尝试重新连接
}
});
}
private void queryPurchases() {
Purchase.PurchasesResult purchasesResult = billingClient.queryPurchases(BillingClient.SkuType.INAPP);
List purchasesList = purchasesResult.getPurchasesList();
if (purchasesList != null && purchasesList.size() > 0) {
// 用户已购买商品,可以执行相应操作
for (Purchase purchase : purchasesList) {
String sku = purchase.getSku(); // 商品的SKU
String purchaseToken = purchase.getPurchaseToken(); // 购买令牌
// 其他操作...
}
} else {
// 用户未购买商品
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if (billingClient != null && billingClient.isReady()) {
billingClient.endConnection();
}
}
这样,你就可以使用Google Play Billing库来检查应用内购买状态了。请注意,你还需要在Google Play开发者控制台配置相应的应用内商品和订阅,以便进行购买测试。