Мое приложение в приложении покупки продолжает падать
Все идет гладко, пока я не попытаюсь получить SkuDetails. Я сделал все до мельчайших подробностей, о которых говорит гид по Google, но все же не повезло.
Мой продукт "thefullgame" был настроен в Google Dev и также был активирован.
Я загрузил версию моего APK, как сказано в руководстве... (он не должен быть в бета / альфа-версии, верно?)
Мой упрощенный код MainActivity:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String base64EncodedPublicKey = "MY_KEY";
mHelper = new IabHelper(this, base64EncodedPublicKey);
mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
public void onIabSetupFinished(IabResult result) {
if (!result.isSuccess()) {
Gdx.app.log("..", "::Problem : " + result);
}
List<String> additionalSkuList = new ArrayList<String>();
additionalSkuList.add("thefullgame");
mHelper.queryInventoryAsync(true, additionalSkuList, mQueryFinishedListener);
}
});
}
QueryInventoryFinishedListener
mQueryFinishedListener = new QueryInventoryFinishedListener() {
public void onQueryInventoryFinished(IabResult result, Inventory inventory)
{
if (result.isFailure()) {
Gdx.app.log("..", "error : " + result );
return;
}
SkuDetails myDetails = inventory.getSkuDetails("thefullgame");
String fullgamePrice = myDetails.getPrice(); // this is the line it crashes at (line 61)
}
};
LOGCAT:
08-06 21:41:25.988: D/AndroidRuntime(11130): Shutting down VM
08-06 21:41:25.988: W/dalvikvm(11130): threadid=1: thread exiting with uncaught exception (group=0x41744da0)
08-06 21:41:25.988: E/AndroidRuntime(11130): FATAL EXCEPTION: main
08-06 21:41:25.988: E/AndroidRuntime(11130): Process: com.blabla.blabla, PID: 11130
08-06 21:41:25.988: E/AndroidRuntime(11130): java.lang.NullPointerException
08-06 21:41:25.988: E/AndroidRuntime(11130): at com.blabla.blabla.MainActivity$2.onQueryInventoryFinished(MainActivity.java:61)
08-06 21:41:25.988: E/AndroidRuntime(11130): at com.blabla.blabla.IabHelper$2$1.run(IabHelper.java:630)
08-06 21:41:25.988: E/AndroidRuntime(11130): at android.os.Handler.handleCallback(Handler.java:733)
08-06 21:41:25.988: E/AndroidRuntime(11130): at android.os.Handler.dispatchMessage(Handler.java:95)
08-06 21:41:25.988: E/AndroidRuntime(11130): at android.os.Looper.loop(Looper.java:136)
08-06 21:41:25.988: E/AndroidRuntime(11130): at android.app.ActivityThread.main(ActivityThread.java:5479)
08-06 21:41:25.988: E/AndroidRuntime(11130): at java.lang.reflect.Method.invokeNative(Native Method)
08-06 21:41:25.988: E/AndroidRuntime(11130): at java.lang.reflect.Method.invoke(Method.java:515)
08-06 21:41:25.988: E/AndroidRuntime(11130): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
08-06 21:41:25.988: E/AndroidRuntime(11130): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
08-06 21:41:25.988: E/AndroidRuntime(11130): at dalvik.system.NativeStart.main(Native Method)
1 ответ
Неплохо было бы опубликовать apk для (по крайней мере) alpha- в противном случае вы, как правило, получаете сообщение об ошибке " эта версия приложения не настроена для выставления счетов через Google Play. Проверьте справочный центр для получения дополнительной информации ".
К сожалению, в IABHelper существует множество ошибок - большинство из них связано с асинхронными методами, но некоторые из них просто глупы, и даже исправление ошибок приводит к появлению ошибок. (В последнем примере исправление, принятое сегодня, заняло около 8 месяцев).
К счастью, большинство проблем было найдено и обсуждено в очереди. Вам нужно будет изучить список и, возможно, решить их самостоятельно. Ваша проблема похожа на описанную здесь. Я не выглядел внимательно, но что-то вроде этого может помочь:
int queryPurchases(com.blabla.blabla.MainActivity.util.Inventory inv, String itemType) throws JSONException, RemoteException {
+ if (mDisposed) return IABHELPER_UNKNOWN_ERROR;
+ checkNotDisposed();
+ checkSetupDone("queryPurchases");
// Query purchases
(Если у вас нет mDisposed, возможно, вы не используете самый последний источник. Также убедитесь, что вы опубликовали исправление сегодня.)