2014-04-02 13 views
8

Tôi đang cố gắng để dịch vụ thanh toán trong ứng dụng của Google hoạt động.Android Trong ứng dụng Thanh toán bảo mậtException "Binder invocation đến một giao diện không chính xác"

Tôi đã có cho đến nay mà các dịch vụ này được ràng buộc và kết nối, nhưng một khi tôi cố gắng để lấy một số dữ liệu từ dịch vụ nó bị treo với các bản ghi:

 
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) 

Đây là mã của tôi cho đến nay:

các hoạt động cho thấy Purchases:

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

các cuộc gọi IAB một khi dịch vụ đã kết nối:

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

Lỗi trên dòng cuối cùng ...getSkuDetails(... với lỗi được đăng ở trên.


Tôi đã nghiên cứu về vấn đề này và nhận thấy rằng có thể do tên gói sai. Tôi đã bao gồm IInAppBillingService.aidl như nó được mô tả trên hồ sơ của google nhưng tôi vẫn nhận được một gói sai về nhập khẩu:

Các tập tin là tại địa chỉ: src/main/aidl/com/android/vending/billing/IInAppBillingService.aidl

Nhưng khi tôi đang nhập khẩu các lớp được tạo ra Android Studio sử dụng nhập khẩu này đường dẫn:

import billing.IInAppBillingService; 

Theo tài liệu này thực sự cần được:

import com.android.vending.billing.IInAppBillingService; 

Is vẫn còn một cái gì đó sai với thiết lập dự án của tôi hoặc không ai biết nguyên nhân của lỗi này?

nhiều cảm ơn trước, McFarlane

Trả lời

19

tôi đã cùng một vấn đề và tôi đã tìm ra rằng aidl tập tin phải nằm trong com.android.vending.billing gói trong thư mục src nhưng bạn đặt rằng trong src/main/aidl/com/android/vending/billing mà không phải là chính xác.

+0

là nó hoạt động ....? –

+0

vâng, nó là .....! –

+0

cảm ơn .......................! – Saveen

0

Tôi cũng gặp vấn đề tương tự. Tôi làm theo các bước này từ https://developer.android.com

Sao chép tệp IInAppBillingService.aidl vào dự án của bạn.

Nếu bạn đang sử dụng Android Studio, hoàn thành các bước để sao chép các tập tin : Navigate to src/main trong cửa sổ công cụ dự án. Chọn Tệp> Mới> Thư mục, nhập aidl vào cửa sổ Thư mục Mới và chọn OK. Chọn Tệp> Mới> Gói, nhập com.android.vending.billing trong cửa sổ Gói mới và chọn OK. Sử dụng trình thám hiểm tệp hệ điều hành của bạn, điều hướng đến <sdk>/extras/google/play_billing /, sao chép tệp IInAppBillingService.aidl và dán vào gói com.android.vending.billing trong dự án của bạn.

Tôi tạo thư mục aidl và sau đó trong thư mục này, hãy tạo gói com.android.vending.billing và quá trình nhập của tôi vẫn đang nhập thanh toán.IInAppBillingService; Tôi cố gắng để thêm gói trong src nhưng IInAppBillingService.java không được tạo ra.

enter image description here

0

Tôi có vấn đề này do sử dụng Trong App Billing v2 và nghĩ nó là phiên bản v3. Rất tiếc :)

Các vấn đề liên quan