Android:Intent Extras 未通过 Activity 上下文之外的 startActivity() 传递

Tem*_*ayo 1 java eclipse android android-intent

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

由于广播类不扩展活动类,因此有意图地调用活动需要我用 来标记它Intent.FLAG_ACTIVITY_NEW_TASK

现在,意图有一个额外的内容(短信和一些参数作为单个字符串),我想随意图一起发送。一切都很顺利,但额外的内容并不是有意发送的。

这是我的广播类代码

//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);
Run Code Online (Sandbox Code Playgroud)

从 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();
}
Run Code Online (Sandbox Code Playgroud)

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

我知道我在某个地方遗漏了一些东西,但我会感谢您的迅速帮助

Com*_*are 5

您还需要处理onNewIntent(),如果活动已经存在,则可能会调用该startActivity()处理并将现有实例带回前台。你的多余的可能就在那里。