2017-09-25 107 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

谢谢你的回答。 –