2011-05-17 37 views
1

我最近在市場上發佈了我的應用程序。我在兩臺設備和幾臺模擬器上測試了它,並且它工作正常。但是,我現在得到了一些崩潰報告,但出現以下錯誤:Android應用程序部隊在某些設備上關閉,但不是其他設備

java.lang.RuntimeException:傳遞結果失敗ResultInfo {who = null,request = 32665,result = -1,data = Intent {(has額外)}}}到活動{com.eden.statusphere/com.eden.statussphere.FacebookConnect}:java.lang.NullPointerException

我只將一件事傳遞給FacebookConnect:一個字符串...這裏是代碼。 (我用easyandroidfacebooksdk)

private OnClickListener FacebookonListener = new OnClickListener() { 
    public void onClick(View v) { 
     try{ 

      ConnectivityManager cMgr = (ConnectivityManager) v.getContext().getSystemService(Context.CONNECTIVITY_SERVICE);   
      NetworkInfo netInfo = cMgr.getActiveNetworkInfo(); 
      String status = netInfo.getState().toString(); 

      if (status.equals("CONNECTED")) { 
       intent.putExtra(".myMsg",statusHolder); 
       startActivity(intent); 
      } else { 
       Toast.makeText(getApplicationContext(), "No connection available", 
       Toast.LENGTH_SHORT).show(); 
      } 

     } 
     catch (Exception e) { 
      Toast.makeText(getApplicationContext(), "Connection refused", 
      Toast.LENGTH_SHORT).show(); 
     } 
    } 
}; 

上面是onClickListener,statusHolder是大幹快上我的FacebookConnect活動傳遞的字符串。這是FacebookConnect部分在錯誤發生:

public void loginSuccess(Facebook facebook) { 

    GraphApi graphApi= new GraphApi(facebook); 
    if(intent.getStringExtra(".myMsg")!="null"){ 

    try { 

     graphApi.setStatus(intent.getStringExtra(".myMsg")); 
     fbManager.displayToast("Status posted!"); 
     Intent myIntent = new Intent(this, mainActivity.class); 
     startActivityForResult(myIntent, 0); 

    } catch (EasyFacebookError e) { 
     e.toString(); 
    } 
    } else { 
     fbManager.displayToast("Fatal error occured: Your device refuses to pass the information to Facebook."); 
    } 



} 

的if-else語句我只是說,以檢查是否可能的意圖是越來越爲空過去了,但我得到了同樣的問題崩潰報告不管。我一直在拉我的頭髮很長一段時間。有人有線索嗎? HTC Thunderbolt是一款無法使用的設備。

+0

它在不使用該設備時是否一致?所以每次都會失敗,或者有時候會失敗? – FoamyGuy 2011-05-17 18:06:14

+0

每次在這些特定設備上都會失敗。但只有當按鈕被按下並且意圖通過時。該應用程序運行正常否則。 – abuser757891 2011-05-17 18:10:11

+1

您正在檢查intent.getStringExtra是否返回null,但您是否確定「intent」本身非空? – 2011-05-17 19:48:48

回答

2

我完全忘了這個問題,但我想我應該記錄下來。無論如何,事實證明這是Facebook當時的錯誤。在我的應用在Facebook服務器上幾天後,問題就解決了。

想我應該提到這一點:

整個的考驗,但是我做了一噸搜索試圖弄清楚這一點,而且奇怪的是,這是如果API密鑰無效(一個你相同的問題引起的用keytool生成)。所以如果有人遇到這個問題,我會建議確保他們的密鑰都是正確的。如果密鑰正確,請等待幾天,然後再在Android電子市場上發佈您的應用或其他內容。

5
if(intent.getStringExtra(".myMsg")!="null"){ 

你比較多的字符串與字符串「null」,除非你傳遞的額外字符串確實發生是常量字符串「null」,它總是會失敗。爲了解決這個問題,您使用的是對象引用的直接比較,而不是.equals()

難道你不想比較它與的值null嗎?

if(intent.getStringExtra(".myMsg")!= null){ 

請注意你的代碼目前維持,你比較會失敗,所以你會進入到try條款和最終調用

graphApi.setStatus(intent.getStringExtra(".myMsg")); 

在返回額外的實際上是null

+0

但這並不能解釋爲什麼它會在某些設備上崩潰而在其他設備上崩潰,或者我錯過了什麼? – swalkner 2011-07-20 13:08:13

+0

我的建議是解決這個明顯的錯誤,然後再試一次。 – 2011-07-20 13:34:35

+0

從這個問題很難說出來,但是在將它添加到意圖之前,statusHolder也可能是null,這也會觸發NPE。 – 2011-07-20 13:36:00

相關問題