I am currently creating an application using Phonegap 1.6.0 and Sencha Touch 1.1. Recently, when testing on a smartphone with Android 4.0.4, we found that Facebook Login does not work as expected. We use the Phonegap Facebook plugin located here with the fixes for Cordoba. It happens that after we try to log into Facebook on a smartphone with Android Honeycomb or higher, the application will throw a NetworkOnMainThreadException, because network operations are not allowed in the main thread. This exception is thrown only on Android Honeycomb or higher, so we did not notice it on 2.3.3. An exception occurs when calling FB.login (), and the callback is not reached.
I checked various topics and topics, but they are all very vague. I know that I need to start a network operation in a separate thread, but I'm not sure how this should be done . Threading seems to happen in Java, but I donβt use Java at all, so before I disarm code that was not written by me, I need help.
I will try to narrow down which part throws an exception later. Any help would be appreciated.
Error stack:
05-25 15:42:29.018: I/Web Console(3785): Cordova Facebook Connect plugin initialized successfully. at file:///android_asset/www/cdv-plugin-fb-connect.js:24 05-25 15:42:29.120: D/OpenGLRenderer(3785): Flushing caches (mode 0) 05-25 15:42:30.479: D/ConnectPlugin(3785): authorized 05-25 15:42:30.479: D/ConnectPlugin(3785): Bundle[{expires_in=5177550, access_token=censored, code=censored}] 05-25 15:42:30.503: D/AndroidRuntime(3785): Shutting down VM 05-25 15:42:30.503: W/dalvikvm(3785): threadid=1: thread exiting with uncaught exception (group=0x40a671f8) 05-25 15:42:30.511: E/AndroidRuntime(3785): FATAL EXCEPTION: main 05-25 15:42:30.511: E/AndroidRuntime(3785): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=32665, result=-1, data=Intent { (has extras) }} to activity {com.company.product/com.company.product.productActivity}: android.os.NetworkOnMainThreadException 05-25 15:42:30.511: E/AndroidRuntime(3785): at android.app.ActivityThread.deliverResults(ActivityThread.java:2980) 05-25 15:42:30.511: E/AndroidRuntime(3785): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3023) 05-25 15:42:30.511: E/AndroidRuntime(3785): at android.app.ActivityThread.access$1100(ActivityThread.java:123) 05-25 15:42:30.511: E/AndroidRuntime(3785): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1177) 05-25 15:42:30.511: E/AndroidRuntime(3785): at android.os.Handler.dispatchMessage(Handler.java:99) 05-25 15:42:30.511: E/AndroidRuntime(3785): at android.os.Looper.loop(Looper.java:137) 05-25 15:42:30.511: E/AndroidRuntime(3785): at android.app.ActivityThread.main(ActivityThread.java:4424) 05-25 15:42:30.511: E/AndroidRuntime(3785): at java.lang.reflect.Method.invokeNative(Native Method) 05-25 15:42:30.511: E/AndroidRuntime(3785): at java.lang.reflect.Method.invoke(Method.java:511) 05-25 15:42:30.511: E/AndroidRuntime(3785): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 05-25 15:42:30.511: E/AndroidRuntime(3785): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 05-25 15:42:30.511: E/AndroidRuntime(3785): at dalvik.system.NativeStart.main(Native Method) 05-25 15:42:30.511: E/AndroidRuntime(3785): Caused by: android.os.NetworkOnMainThreadException 05-25 15:42:30.511: E/AndroidRuntime(3785): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099) 05-25 15:42:30.511: E/AndroidRuntime(3785): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$SSLInputStream.read(OpenSSLSocketImpl.java:664) 05-25 15:42:30.511: E/AndroidRuntime(3785): at libcore.io.Streams.readSingleByte(Streams.java:41) 05-25 15:42:30.511: E/AndroidRuntime(3785): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$SSLInputStream.read(OpenSSLSocketImpl.java:655) 05-25 15:42:30.511: E/AndroidRuntime(3785): at libcore.net.http.HttpConnection.isStale(HttpConnection.java:256) 05-25 15:42:30.511: E/AndroidRuntime(3785): at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:71) 05-25 15:42:30.511: E/AndroidRuntime(3785): at libcore.net.http.HttpConnection.connect(HttpConnection.java:128) 05-25 15:42:30.511: E/AndroidRuntime(3785): at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:308) 05-25 15:42:30.511: E/AndroidRuntime(3785): at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:460) 05-25 15:42:30.511: E/AndroidRuntime(3785): at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.connect(HttpsURLConnectionImpl.java:432) 05-25 15:42:30.511: E/AndroidRuntime(3785): at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:282) 05-25 15:42:30.511: E/AndroidRuntime(3785): at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:232) 05-25 15:42:30.511: E/AndroidRuntime(3785): at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:273) 05-25 15:42:30.511: E/AndroidRuntime(3785): at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:168) 05-25 15:42:30.511: E/AndroidRuntime(3785): at libcore.net.http.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:270) 05-25 15:42:30.511: E/AndroidRuntime(3785): at com.facebook.android.Util.openUrl(Util.java:206) 05-25 15:42:30.511: E/AndroidRuntime(3785): at com.facebook.android.Facebook.request(Facebook.java:751) 05-25 15:42:30.511: E/AndroidRuntime(3785): at com.facebook.android.Facebook.request(Facebook.java:688) 05-25 15:42:30.511: E/AndroidRuntime(3785): at org.apache.cordova.facebook.ConnectPlugin$AuthorizeListener.onComplete(ConnectPlugin.java:271) 05-25 15:42:30.511: E/AndroidRuntime(3785): at com.facebook.android.Facebook.authorizeCallback(Facebook.java:433) 05-25 15:42:30.511: E/AndroidRuntime(3785): at org.apache.cordova.facebook.ConnectPlugin.onActivityResult(ConnectPlugin.java:196) 05-25 15:42:30.511: E/AndroidRuntime(3785): at org.apache.cordova.DroidGap.onActivityResult(DroidGap.java:1178) 05-25 15:42:30.511: E/AndroidRuntime(3785): at android.app.Activity.dispatchActivityResult(Activity.java:4649) 05-25 15:42:30.511: E/AndroidRuntime(3785): at android.app.ActivityThread.deliverResults(ActivityThread.java:2976) 05-25 15:42:30.511: E/AndroidRuntime(3785): ... 11 more
Rex
source share