2012-05-25 7 views
7

Şu anda Phonegap 1.6.0 ve Sencha Touch 1.1 kullanarak bir uygulama oluşturuyorum. Son zamanlarda, Android 4.0.4 ile bir akıllı telefon üzerinde test yaparken, Facebook Login'in beklendiği gibi çalışmadığını keşfettik. Biz Cordova için yamalar ile here bulunan Phonegap Facebook Eklentisi kullanıyoruz. Ne olur, Android Honeycomb veya daha yüksek bir Smartphone'da Facebook'a giriş yapmayı denedikten sonra, ağ işlemlerinin ana iş parçacığına izin verilmediği için uygulama bir NetworkOnMainThreadException başlatır. Bu istisna sadece Android Honeycomb veya üstü atıldı, bu yüzden 2.3.3'de fark etmedik. FB.login() çağrılırken istisna atılır ve geri aramaya ulaşılamaz.Facebook'ta NetworkOnMainThreadException Phonegap ile Oturum Aç 1.6.0

Çeşitli konulara ve konulara baktım ama hepsi çok belirsiz. Ağ işlemini ayrı bir iş parçacığında çalıştırmam gerektiğinin farkındayım, ancak Bunun nasıl yapılması gerektiğinden emin değilim. Java'da iş parçacığı ortaya çıkıyor, ama hiç Java kullanmıyorum, bu yüzden benim tarafımdan yazılmadığı bir kodla etrafta dolaşmadan önce, biraz yardım isterim.

Daha sonra hangi bölümün istisna oluşturduğunu daraltmaya çalışacağım. Herhangi bir yardım takdir edilecektir.

hata deste

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 

cevap

20

bir ayrı iplik ConnectPlugin.java doğrulama parçası koyarak hatayı gidermek başardı. Gelecek okuyucular için aşağıdaki talimatları yayınlayacağım.

ConnectPlugin.java yılında değiştirin:

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(); 
} 

aşağıdaki kodla:

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 düzeltmek gerektiğini.

+0

Teşekkürler! Bu resmi eklentide hala bozuk. Bir çekme talebi gönderdiniz mi? – vish

+0

Henüz değil. Bu konularda yardımcı olmak için kendimi de deneyimsiz buluyorum, ama bu öğleden sonra bir bakacağım. Bununla ilgili hatalar bölümünde bir şeyler okudum. – Rex

+0

Gelecekte merhaba! - FYI: Sorun [burada Github'da] (https://github.com/davejohnson/phonegap-plugin-facebook-connect/issues/122) –