2012-04-11 61 views
3

我在搞Android SDK,注意到在接收SMS消息的一個示例中,onReceive的執行從未過去Intent.getExtras()。我在該行之前和之後添加了日誌,以確保執行getExtras之後沒有日誌。 Android模擬器版本是4.0.3。 任何人都可以指出我沒有看到的代碼中的一些缺陷,或者爲這個看似隨機而令人沮喪的問題提供解決方法或解決方案?Android編程:Intent.getExtras()似乎以某種方式阻止執行流程

public class SmsReceiver extends BroadcastReceiver 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     Log.i("smsreceiver", "Intent: " + intent.getAction()); //Shows up in LogCat normally 
     Bundle bundle = intent.getExtras(); 
     Log.i("smsreceiver", "after"); //this is never reached, and nothing after this is executed 

     Object messages[] = (Object[]) bundle.get("pdus"); 
     SmsMessage smsMessage[] = new SmsMessage[messages.length]; 
     for (int n = 0; n < messages.length; n++) 
     { 
      smsMessage[n] = SmsMessage.createFromPdu((byte[])messages[n]); 

     } 
     Log.i("smsreceiver", "Message: " + smsMessage[0].getMessageBody()); 

    } 
} 
+0

工作的版本是4.0.3。只有或測試過? – NovusMobile 2012-04-11 05:15:54

+0

我測試的版本是4.0.3。我還沒有嘗試過任何其他版本。 – user1325633 2012-04-11 05:18:40

+0

做onReceive()返回或只是掛? – 2012-04-11 06:16:52

回答

0

我會運行一個調試器下您的應用程序,並得到像你提到它「掛起」,然後手動打入的應用程序,看到執行是。這可能會給你提示可能是什麼原因。

對於獎勵積分,您可以將您的IDE設置爲能夠解析框架源代碼,然後實際調試到getExtras()調用中,找出錯誤。