SecurityException: Binder invocation to an incorrect interface using in-app billing
2015-06-09 19:00
148 查看
0down votefavorite | 转自stack overflow:http://stackoverflow.com/questions/24591282/securityexception-binder-invocation-to-an-incorrect-interface-using-in-app-bill I'm getting a SecurityException when attempting to use the in-app billing library that Google offers. Here is the full exception: 07-05 15:56:47.783 26481-26481/com.andrewq.planets E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.andrewq.planets, PID: 26481 java.lang.SecurityException: Binder invocation to an incorrect interface at android.os.Parcel.readException(Parcel.java:1465) at android.os.Parcel.readException(Parcel.java:1419) at billing.IInAppBillingService$Stub$Proxy.isBillingSupported(IInAppBillingService.java:208) at com.android.vending.billing.IabHelper$1.onServiceConnected(IabHelper.java:227) at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:1101) at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1118) at android.os.Handler.handleCallback(Handler.java:733) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5001) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) at dalvik.system.NativeStart.main(Native Method) Here is the IabHelper.java method with line 227: @Override public void onServiceConnected(ComponentName name, IBinder service) { if (mDisposed) return; logDebug("Billing service connected."); mService = IInAppBillingService.Stub.asInterface(service); String packageName = mContext.getPackageName(); try { logDebug("Checking for in-app billing 3 support."); // check for in-app billing v3 support //**LINE 227** int response = mService.isBillingSupported(3, packageName, ITEM_TYPE_INAPP); if (response != BILLING_RESPONSE_RESULT_OK) { if (listener != null) listener.onIabSetupFinished(new IabResult(response, "Error checking for billing v3 support.")); // if in-app purchases aren't supported, neither are subscriptions. mSubscriptionsSupported = false; return; } logDebug("In-app billing version 3 supported for " + packageName); // check for v3 subscriptions support response = mService.isBillingSupported(3, packageName, ITEM_TYPE_SUBS); if (response == BILLING_RESPONSE_RESULT_OK) { logDebug("Subscriptions ***AILABLE."); mSubscriptionsSupported = true; } else { logDebug("Subscriptions NOT ***AILABLE. Response: " + response); } mSetupDone = true; } catch (RemoteException e) { if (listener != null) { listener.onIabSetupFinished(new IabResult(IABHELPER_REMOTE_EXCEPTION, "RemoteException while setting up in-app billing.")); } e.printStackTrace(); return; } if (listener != null) { listener.onIabSetupFinished(new IabResult(BILLING_RESPONSE_RESULT_OK, "Setup successful.")); } } }; And finally, here is the IInAppBillingService.java file where line 208 is: @Override public int isBillingSupported(int apiVersion, java.lang.String packageName, java.lang.String type) throws android.os.RemoteException { android.os.Parcel _data = android.os.Parcel.obtain(); android.os.Parcel _reply = android.os.Parcel.obtain(); int _result; try { _data.writeInterfaceToken(DESCRIPTOR); _data.writeInt(apiVersion); _data.writeString(packageName); _data.writeString(type); mRemote.transact(Stub.TRANSACTION_isBillingSupported, _data, _reply, 0); //**LINE 208** _reply.readException(); _result = _reply.readInt(); } finally { _reply.recycle(); _data.recycle(); } return _result; } Now this happens when I first launch my app. I got the exception after attaching a debugger to the process. android
| ||
1 Answer 1
activeoldestvotesup vote1down voteaccepted | Found my answer ( here), hope it solves yours. (It's in Chinese, but Chrome translated it.) It had to do with the location of the .AIDL on the client side. It must be an exact duplicate of the .AIDL file in the server. And it must be placed in a package of the same name in the client's src folder.
|
相关文章推荐
- iOS开发零基础教程之AFNetWorking POST 队列请求
- 苹果Swift编程语言入门教程【中文版】
- quick-cocos2d-x如何在mac下编译安卓版本
- 【app运营 】一款APP产品如何拉新、留存用户?
- android xml 的解析.
- 正则表达式校验 android
- android:inputType参数类型说明
- Android 取view的cache图片
- unity3d所要知道的基础知识体系大纲
- iOS 动画结束后 view的位置 待完善
- Android开源框架的SlidingFragment的使用
- Android ViewTreeObserver
- Android开发: 错误整理(不断更新)
- DirectX 9 UI三种设计学习笔记:文章4章Introducing DirectInput+文章5章Wrapping Direct3D
- android获得屏幕高度和宽度
- Android studio设置背景图片
- 通过微信分享链接地址会自动添加from参数区分来源
- mPackageManager.setApplicationHiddenSettingAsUser
- iOS动画
- android 多层目录文件创建