android - SecurityException: Binder invocation to an incorrect interface using in-app billing -
i'm getting securityexception when attempting use in-app billing library google offers. here 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 incorrect interface @ android.os.parcel.readexception(parcel.java:1465) @ android.os.parcel.readexception(parcel.java:1419) @ billing.iinappbillingservice$stub$proxy.isbillingsupported(iinappbillingservice.java:208) @ com.android.vending.billing.iabhelper$1.onserviceconnected(iabhelper.java:227) @ android.app.loadedapk$servicedispatcher.doconnected(loadedapk.java:1101) @ android.app.loadedapk$servicedispatcher$runconnection.run(loadedapk.java:1118) @ android.os.handler.handlecallback(handler.java:733) @ android.os.handler.dispatchmessage(handler.java:95) @ android.os.looper.loop(looper.java:136) @ android.app.activitythread.main(activitythread.java:5001) @ java.lang.reflect.method.invokenative(native method) @ java.lang.reflect.method.invoke(method.java:515) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:785) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:601) @ dalvik.system.nativestart.main(native method) here iabhelper.java method 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 in-app billing 3 support."); // check 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 billing v3 support.")); // if in-app purchases aren't supported, neither subscriptions. msubscriptionssupported = false; return; } logdebug("in-app billing version 3 supported " + packagename); // check v3 subscriptions support response = mservice.isbillingsupported(3, packagename, item_type_subs); if (response == billing_response_result_ok) { logdebug("subscriptions available."); msubscriptionssupported = true; } else { logdebug("subscriptions not available. response: " + response); } msetupdone = true; } catch (remoteexception e) { if (listener != null) { listener.oniabsetupfinished(new iabresult(iabhelper_remote_exception, "remoteexception while setting in-app billing.")); } e.printstacktrace(); return; } if (listener != null) { listener.oniabsetupfinished(new iabresult(billing_response_result_ok, "setup successful.")); } } }; and finally, here iinappbillingservice.java file 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(); } { _reply.recycle(); _data.recycle(); } return _result; } now happens when first launch app. got exception after attaching debugger process.
found answer ( here), hope solves yours. (it's in chinese, chrome translated it.) had location of .aidl on client side. must exact duplicate of .aidl file in server. , must placed in package of same name in client's src folder.

Comments
Post a Comment