如何将传入的短信从通知直接打开到我的应用程序的意图作为文本视图或列表视图?

How to open incoming sms from notification directly to my application's intent as textview or listview?

我想直接打开来自通知的传入短信到我的应用程序的意图,请帮助我尝试使用以下代码从收件箱读取短信

public class SmsReceiver extends BroadcastReceiver
    {
        public static String BODY = "Test";
        public static String ADDRESS = "5556";
        @Override
        public void onReceive(Context context, Intent intent) 
        {
            //---get the SMS message passed in---
            Bundle bundle = intent.getExtras();        
            SmsMessage[] msgs = null;
            String str = "";            
            if (bundle != null)
            {
                //---retrieve the SMS message received---
                Object[] pdus = (Object[]) bundle.get("pdus");
                msgs = new SmsMessage[pdus.length];            
                for (int i=0; i<msgs.length; i++){
                    msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);                
                    str += "SMS from " + msgs[i].getOriginatingAddress();                     
                    str += " :";
                    str += msgs[i].getMessageBody().toString();
                    str += "\n";
                    ADDRESS=msgs[i].getOriginatingAddress();
                    BODY=str;

                }
                //---display the new SMS message---
                Toast.makeText(context, str, Toast.LENGTH_SHORT).show();
            }    

当您的设备收到一条新的 SMS 时,android 创建一个意图并为您的应用程序 activity 广播 SMS_RECEIVED_ACTION. What you are going to do is create an Intent Filter,该应用程序处理 phone 收到。

当 phone 收到一条新的 SMS 消息并且用户点击通知时,她会看到一个对话框,其中包含可以处理此操作的应用*****。你的应用程序应该在那里,当她决定她希望你的应用程序处理传入的消息时,你可以使用 getMessagesFromIntent 方法来提取消息(你在你的应用程序中使用该方法)。

PS:您不能将您的应用程序设置为默认消息应用程序,您可能需要这样做。用户必须明确选择您的应用才能打开消息,如果她希望它成为默认消息传递应用(通过勾选 set as default 复选框)。

注意:看起来你必须创建一个接收SMS_RECEIVED_ACTION的广播接收器,你可以在API 19之前将其用作常量在 android.provider.Telephony.SMS_RECEIVED 并启动您自己的通知,您可以在其中将用户直接引导至您的应用程序。不幸的是,默认消息应用程序似乎会 发出通知。

来源:@Mike M