我在labHelper.checkSetupDone中有一个errorStateStateException错误,当用户尝试在我的应用中购买某些物品时,仅带有Android 8的设备发生了此错误。来自Google错误控制台的跟踪:
java.lang.IllegalStateException:
at n7.ad2.util.IabHelper.checkSetupDone (IabHelper.java:771)
at n7.ad2.util.IabHelper.launchPurchaseFlow (IabHelper.java:422)
at n7.ad2.util.IabHelper.launchPurchaseFlow (IabHelper.java:384)
at n7.ad2.util.IabHelper.launchPurchaseFlow (IabHelper.java:378)
at n7.ad2.activity.SettingActivity.donateCheese (SettingActivity.java:155)
我在其中调用startSetup的代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_setting);
mHelper = new IabHelper(this, base64EncodedPublicKey);
mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
@Override
public void onIabSetupFinished(IabResult result) {
if (result.isSuccess()) {
broadcastReceiver = new IabBroadcastReceiver(SettingActivity.this);
IntentFilter intentFilter = new IntentFilter(IabBroadcastReceiver.ACTION);
registerReceiver(broadcastReceiver, intentFilter);
try {
mHelper.queryInventoryAsync(checkInventory);
} catch (IabHelper.IabAsyncInProgressException e) {
e.printStackTrace();
}
}
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
if (broadcastReceiver != null) {
unregisterReceiver(broadcastReceiver);
}
if (mHelper != null) {
mHelper.disposeWhenFinished();
mHelper = null;
}
}
private void donateCheese(String SKU) {
try {
mHelper.launchPurchaseFlow(SettingActivity.this, SKU, 7, finishedListener);
} catch (IabHelper.IabAsyncInProgressException e) {
e.printStackTrace();
}
}
[当恶意用户尝试使用Lucky Patcher
之类的附加实用程序来获得应用程序的高级功能时,很可能会遇到这种错误。