【问题标题】:Android: Intent Extras not passed with startActivity() outside Activity contextAndroid:Intent Extras 未通过 Activity 上下文之外的 startActivity() 传递
【发布时间】:2014-12-09 14:03:02
【问题描述】:

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

由于广播类没有扩展 Activity 类,所以有意图地调用 Activity 需要我用 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();
}

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

我知道我在某处遗漏了一些东西,但会感谢您的快速帮助

【问题讨论】:

    标签: java android eclipse android-intent


    【解决方案1】:

    您还需要处理onNewIntent(),如果活动已经存在并且startActivity() 将现有实例带回前台,则可能会调用它。你的额外部分可能在里面。

    【讨论】:

    • 非常感谢你,兄弟,你让我开心,这就是答案,不要忘记 onNewIntent() 带有一个必须严格遵守的意图对象,getIntent() 是危险的这里。再次感谢
    猜你喜欢
    • 2011-04-24
    • 1970-01-01
    • 1970-01-01
    • 2019-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多