Вызов Android In App Billing SecurityException Binder для неправильного интерфейса

Я пытаюсь заставить Google In App Billing Services работать.

У меня так далеко, что служба привязана и подключена, но как только я пытаюсь получить некоторые данные из службы, она вылетает с журналом:

04-02 10:36:32.795  10569-10651/my.app.package E/IAP﹕ java.lang.SecurityException: Binder invocation to an incorrect interface
            at android.os.Parcel.readException(Parcel.java:1425)
            at android.os.Parcel.readException(Parcel.java:1379)
            at billing.IInAppBillingService$Stub$Proxy.getSkuDetails(IInAppBillingService.java:251)
            at my.app.package.libs.clientbackend.iap.IAPHelper$FetchItemsCallable.call(IAPHelper.java:102)
            at my.app.package.libs.clientbackend.iap.IAPHelper$FetchItemsCallable.call(IAPHelper.java:89)
            at java.util.concurrent.FutureTask.run(FutureTask.java:234)
            at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:390)
            at java.util.concurrent.FutureTask.run(FutureTask.java:234)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
            at java.lang.Thread.run(Thread.java:856)

Это мой код до сих пор:

Действия, которые показывают покупки:

Intent serviceIntent = new Intent("com.android.vending.billing.InAppBillingService.BIND");
serviceIntent.setPackage("com.android.vending");
bindService(serviceIntent, this, Context.BIND_AUTO_CREATE);

IAB звонит после подключения услуги:

Bundle itemBundle = new Bundle();
itemBundle.putStringArrayList("ITEM_ID_LIST", new ArrayList<>(Arrays.asList(itemIds)));
Bundle detailsBundle = service
        .getSkuDetails(3, context.getPackageName(), "inapp", itemBundle);

Он не работает в последней строке ...getSkuDetails(... с ошибкой, указанной выше.


Я провел некоторое исследование по этому вопросу и обнаружил, что это может быть вызвано неправильными именами пакетов. Я включил IInAppBillingService.aidl, как это описано в документации Google, но при импорте я все еще получаю неправильный пакет:

Файл находится по адресу: src/main/aidl/com/android/vending/billing/IInAppBillingService.aidl

Но когда я импортирую сгенерированный класс, Android Studio использует этот путь импорта:

import billing.IInAppBillingService;

Согласно документации это должно быть на самом деле:

import com.android.vending.billing.IInAppBillingService;

Что-то не так с настройкой моего проекта или кто-нибудь знает причину этой ошибки?

Заранее большое спасибо, МакФарлейн.


person McFarlane    schedule 02.04.2014    source источник


Ответы (3)


У меня была та же проблема, и я понял, что файл помощи должен быть в пакете com.android.vending.billing в папке src, но вы поместили его в src/main/aidl/com/android/vending/billing, что неверно.

person mizdler    schedule 09.04.2014

У меня тоже была такая же проблема. Я следую этим шагам с https://developer.android.com

Скопируйте файл IInAppBillingService.aidl в свой проект.

Если вы используете Android Studio, выполните следующие действия, чтобы скопировать файл: Перейдите к src/main в окне инструмента Project. Выберите «Файл» > «Создать» > «Каталог», введите helpl в окне «Новый каталог» и нажмите «ОК». Выберите «Файл» > «Создать» > «Пакет», введите com.android.vending.billing в окне «Новый пакет» и нажмите «ОК». С помощью проводника операционной системы перейдите к ‹sdk›/extras/google/play_billing/, скопируйте файл IInAppBillingService.aidl и вставьте его в пакет com.android.vending.billing в своем проекте.

Я создаю папку помощи, а затем в этой папке создаю пакет com.android.vending.billing, и мой импорт по-прежнему импортирует billing.IInAppBillingService; Я пытаюсь добавить пакет в src, но IInAppBillingService.java не создается.

введите здесь описание изображения

person Dawid Macura    schedule 02.12.2016

У меня была эта проблема из-за использования In App Billing v2 и я думал, что это версия v3. Ой :)

person RelativeGames    schedule 06.11.2017