2017-09-25 131 views
-1

我正在創建一個簡單的Android應用程序,我試圖攔截傳入的短信。我遇到的問題是來自onReceive的吐司消息沒有顯示出來。請幫忙!吐司不顯示在短信接收Android應用程序

感謝,

以賽亞·湯普森

public class SMSR extends BroadcastReceiver 
{ 
@Override 
public void onReceive(Context context, Intent intent) 
{ 
    //Print Message 
    Toast.makeText(context,"Received Message Start",Toast.LENGTH_SHORT).show(); 

    // Get the data (SMS data) bound to intent 
    Bundle bundle = intent.getExtras(); 

    SmsMessage[] msgs = null; 

    String str = ""; 

    if (bundle != null) { 
     // Retrieve the SMS Messages received 
     Object[] pdus = (Object[]) bundle.get("pdus"); 
     msgs = new SmsMessage[pdus.length]; 

     // For every SMS message received 
     for (int i = 0; i < msgs.length; i++) { 
      // Convert Object array 
      msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); 
      // Sender's phone number 
      str += "SMS from " + msgs[i].getOriginatingAddress() + " : "; 
      // Fetch the text message 
      str += msgs[i].getMessageBody().toString(); 
      // Newline <img draggable="false" class="emoji" alt="" src="https://s.w.org/images/core/emoji/72x72/1f642.png"> 
      str += "\n"; 
     } 
    } 


    //Print Message 
    Toast.makeText(context,"Received Message End",Toast.LENGTH_SHORT).show(); 
    Toast.makeText(context,str,Toast.LENGTH_SHORT).show(); 
} 

}

+0

不要使用'Toast'進行調試。改用'Log.d'。另外 - 你確定你收到短信 – Rahel

+0

有很多移動件。檢查這個答案的詳細指南。 https://stackoverflow.com/a/11436473/6051131 – Rahel

+0

我不認爲我收到短信。當我發送測試文本時,應用程序似乎不會攔截它,但是我相信上面的代碼是正確的方式。 –

回答

2

試試這個

new Handler(Looper.getMainLooper()).post(new Runnable() 
{ 
    @Override 
    public void run() 
    { 
     Toast.makeText(context, R.string.sent, Toast.LENGTH_SHORT).show(); 
    } 
}); 
+0

謝謝你的回答。 –