Как устранить эту ошибку в биллинге внутри приложения? - PullRequest
2 голосов
/ 14 ноября 2011
FATAL EXCEPTION: main
java.lang.NullPointerException
    at android.os.Parcel.readException(Parcel.java:1328)
    at android.os.Parcel.readException(Parcel.java:1276)
    at com.android.vending.billing.IMarketBillingService$Stub$Proxy.sendBillingRequest(IMarketBillingService.java:100)
    at kr.my.dungeons.BillingService$CheckBillingSupported.run(BillingService.java:209)
    at kr.my.dungeons.BillingService$BillingRequest.runIfConnected(BillingService.java:127)
    at kr.my.dungeons.BillingService.runPendingRequests(BillingService.java:609)
    at kr.my.dungeons.BillingService.onServiceConnected(BillingService.java:654)
    at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:1049)
    at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1066)
    at android.os.Handler.handleCallback(Handler.java:587)
    at android.os.Handler.dispatchMessage(Handler.java:92)
    at android.os.Looper.loop(Looper.java:126)
    at android.app.ActivityThread.main(ActivityThread.java:4002)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:491)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
    at dalvik.system.NativeStart.main(Native Method)

Это синтаксис ошибки.

  1. Получить пример источника из SDK.

  2. Поместить «открытый ключ» в Security.javaс Google Market.

  3. Мой исходный путь - 'src / kr / my /', а путь к файлу aidl - 'src / com / android / vending / billing /'.

  4. Проверено AndroidManifest.xml.

  5. Загрузить APK в Google Market.(не опубликовано)

  6. добавьте 'sword_001', 'potion_001' на Google Market. (опубликовано)

  7. Установлен такой же apk на устройстве.

(та же ошибка в источнике выборки из https://github.com/robotmedia/AndroidBillingLibrary)

В чем я ошибся?

Ответы [ 4 ]

4 голосов
/ 14 ноября 2011

Это происходит, когда пользователь не принял лицензионное соглашение

.

Итак, запустите EULA

 try {
    CALL BILLING CODE HERE .....
  } catch (NullPointerException e) {
    initialiseMarket();
  }

private void initialiseMarket() {
  new AlertDialog.Builder(this).
    setTitle("Android Market").
    setNeutralButton("CLOSE"), new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface dialog, int which) {
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://search"));
        startActivity(intent);
      }
    }).
    setMessage("Android Market not initialised. Please accept EULA and restart.").
    show();
}

Взяты отсюда

0 голосов
/ 24 апреля 2012

Прочитайте мой ответ здесь:

Android-биллинг в приложении - restoreTransactionInformation

Я предполагаю, что вы пытались восстановить транзакции, потому что группа пользователей (включая меня)) при этом просматривали эту трассировку стека.

Ошибка возникает из-за пустого поля (поля 'messages_id'), добавленного к запросу CONFIRM_TRANSACTIONS, отправляемому обратно при вызове restoreTransactions.

0 голосов
/ 22 апреля 2012

Похоже, это известная ошибка биллинга в приложении, о которой сообщалось здесь .

Я добавил catch в AndroidBillingLibrary , когда это происходит.

0 голосов
/ 06 апреля 2012

Я работаю над исправлением этого здесь https://github.com/drewjw81/AndroidBillingLibrary

Эта версия должна отображать предупреждение, когда она не может связываться с Play правильно.

Если вы используете его, запомните его до сих порнужна некоторая работа, поэтому, пожалуйста, проверьте, также, пожалуйста, подайте отчет об ошибке на моей странице, если ошибка все еще происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...