从android

时间:2015-11-09 19:00:25

标签: android

我正在尝试显示MaterialDialog或toast,具体取决于通过推送通知收到的消息。然而,我遇到的问题是在WakefulBroadcastReceiver onReceive(Context context,Intent intent)方法中传递的上下文不是应用程序的当前上下文。当我用它创建一个MaterialDialog时,我得到一个错误的窗口令牌错误。有没有人知道从WakefulBroadcastReciever获取当前显示的活动的上下文的方法?

2 个答案:

答案 0 :(得分:2)

如果您的活动已打开,则您的BroadcastReceiver可以发送(内部)广播消息。您的活动必须先注册此广播类型(在onResume()中)并在onPause()中注销。然后您的BroadcastReceiver可以使用您的Activity的上下文执行某些操作。

答案 1 :(得分:1)

要添加到基督徒答案,请在收到推送消息时使用此方法发送意图

Intent intent = new Intent("custom-event-name");
  // You can also include some extra data.
intent.putExtra("message", "This is my message!");
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);

然后在您的活动中通过

收听此事件
LocalBroadcastManager.getInstance(this).registerReceiver(
                mMessageReceiver, new IntentFilter("custom-event-name"));

其中mMessageReceiver是您需要实现onReceive消息的接收器实例。看到这个要点

https://gist.github.com/Antarix/8131277