Android:Intent Extras未在Activity上下文之外与startActivity()一起传递

时间:2014-12-09 14:03:02

标签: java android eclipse android-intent

我有一个监听SMS广播的类,然后在同一个应用程序中打开一个活动来显示该消息。这是一个更大项目的一部分。

由于广播类没有扩展活动类,因此调用具有意图的活动需要我用Intent.FLAG_ACTIVITY_NEW_TASK标记它。

现在Intent有一个额外的(SMS消息和一些参数作为单个字符串),我想与意图一起发送。一切顺利,但Extras不是故意发送的。

这是我的代码 来自广播课

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

应用程序可能已经运行,已按下主页按钮。无论哪种方式,我想要实现的是,当注册的接收者收到消息时,我想自动启动一个活动并将消息及其元数据传递给它。

我知道我在某个地方遗漏了某些东西,但会很感激你的快速帮助

1 个答案:

答案 0 :(得分:3)

您还需要处理onNewIntent(),如果活动已存在且startActivity()将现有实例带回前台,则可以调用{{1}}。你的额外可能在那里。