吐司不显示在短信接收Android应用程序

时间:2017-09-25 18:18:53

标签: java android sms toast

我正在创建一个简单的Android应用程序,我试图拦截传入的SMS消息。我遇到的问题是来自onReceive的toast消息没有显示出来。请帮忙!

谢谢,

Isaiah Thompson

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

}

2 个答案:

答案 0 :(得分:2)

试试这个

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

答案 1 :(得分:0)

查看此答案

https://stackoverflow.com/a/11436473/6051131

另外,请确保您的优先级(在清单文件中)小于或等于2147483647