2012-05-25 8 views
7

के साथ लॉगिन करें मैं वर्तमान में फोनगैप 1.6.0 और सेन्चा टच 1.1 का उपयोग कर एक एप्लिकेशन बना रहा हूं। हाल ही में, एंड्रॉइड 4.0.4 के साथ स्मार्टफोन पर परीक्षण करते समय, हमने पाया कि फेसबुक लॉगिन अपेक्षा के अनुसार काफी काम नहीं करता है। हम कॉर्डोवा के पैच के साथ 0gस्थित फोनगैप फेसबुक प्लगइन का उपयोग कर रहे हैं। क्या होता है कि, जब हम एंड्रॉइड हनीकॉम या उच्चतर वाले स्मार्टफोन पर फेसबुक में लॉग इन करने का प्रयास करते हैं, तो एप्लिकेशन ने नेटवर्कऑनमेन थ्रेड अपवाद लॉन्च किया क्योंकि मुख्य थ्रेड पर नेटवर्क ऑपरेशंस की अनुमति नहीं है। यह अपवाद केवल एंड्रॉइड हनीकॉम या ऊपर फेंक दिया गया है, यही कारण है कि हमने इसे 2.3.3 पर नहीं देखा। FB.login() को कॉल करते समय अपवाद फेंक दिया जाता है और कॉलबैक तक नहीं पहुंचता है।फेसबुक पर NetworkOnMainThreadException फोनगैप 1.6.0

मैंने विभिन्न धागे और विषयों की जांच की है लेकिन सभी बेहद अस्पष्ट हैं। मुझे पता है कि मुझे एक अलग थ्रेड में नेटवर्क ऑपरेशन चलाने की ज़रूरत है, लेकिन मुझे यकीन है कि यह कैसे किया जाना चाहिए। जावा में थ्रेडिंग प्रतीत होता है, लेकिन मैं किसी भी जावा का उपयोग नहीं कर रहा हूं, इसलिए मेरे द्वारा लिखे गए कोड में बंदरगाह से पहले, मुझे कुछ मदद चाहिए।

मैं बाद में अपवाद का कारण बनने का प्रयास करने की कोशिश करूंगा। किसी भी सहायता की सराहना की जाएगी।

त्रुटि ढेर:

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 

उत्तर

20

मैं एक अलग थ्रेड में ConnectPlugin.java के प्रमाणीकरण हिस्सा डालकर त्रुटि को हल करने में कामयाब रहे। भविष्य के पाठकों के लिए, मैं नीचे दिए गए निर्देश पोस्ट करूंगा।

ConnectPlugin.java में, बदल देते हैं:

try { 
    JSONObject o = new JSONObject(this.fba.facebook.request("/me")); 
    this.fba.userId = o.getString("id"); 
    this.fba.success(getResponse(), this.fba.callbackId); 
} catch (MalformedURLException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} catch (JSONException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

निम्न कोड के साथ:

Thread t = new Thread(new Runnable() { 
    public void run() { 
     try { 
      JSONObject o = new JSONObject(fba.facebook.request("/me")); 
      fba.userId = o.getString("id"); 
      fba.success(getResponse(), fba.callbackId); 
     } catch (MalformedURLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (JSONException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
}); 
t.start(); 

कि NetworkOnMainThreadException ठीक करना चाहिए।

+0

धन्यवाद! यह अभी भी आधिकारिक प्लगइन में टूटा हुआ है। क्या आपने पुल अनुरोध जमा किया है? – vish

+0

अभी तक नहीं। मैं खुद को ऐसे मुद्दों से मदद करने के लिए बहुत अनुभवहीन मानता हूं, लेकिन मुझे आज दोपहर देखना होगा। मैंने इसके बारे में कुछ भी बग खंड में पढ़ा है। – Rex

+0

भविष्य से हैलो! - एफवाईआई: मुद्दा [यहां गीथूब पर है] (https://github.com/davejohnson/phonegap-plugin-facebook-connect/issues/122) –