我有一个侦听短信广播的类,然后它在同一应用程序中打开一个活动以显示消息。这是一个更大项目的一部分。
由于广播类不扩展活动类,因此调用具有意图的活动需要我用 Intent.FLAG_ACTIVITY_NEW_TASK
标记它。
现在 Intent 有一个额外的(SMS 消息和一些参数作为单个字符串),我想用 Intent 发送。一切都很顺利,但临时演员并没有带着意图发送。
这是我的代码从广播类
//After getting the message into String S and doing some process
Intent inte = new Intent(context.getApplicationContext(), StartApp.class);
inte.putExtra("messageAsString", S.toString()); //Where S is declared somewhere
inte.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(inte);
从在 onCreate() 方法中接收 Intent 的活动
if(getIntent().hasExtra("messageAsString")) {
String message = getIntent().getStringExtra("messageAsString").toString();
Toast toast = Toast.makeText(this, "Received SMS: " + message , Toast.LENGTH_LONG);
toast.show();
}
应用程序可能已经运行,主页按钮已被按下。无论哪种方式,我想要实现的是,当注册的接收者收到消息时,我想自动启动一个活动并将消息及其元数据传递给它。
我知道我在某处错过了一些东西,但会感谢您的迅速帮助
还需要处理 onNewIntent()
,如果活动已经存在并且startActivity()
将现有实例带回前台,则可以调用该。你的额外可能在那里。