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.

enter image description here


Comments

Popular posts from this blog

ios - UICollectionView Self Sizing Cells with Auto Layout -

asp.net - Passing parameter to telerik popup -

node.js - ldapjs - write after end error -