[Android][Parse]推送通知-当处于某个活动中并执行某个方法时,拦截应用程序内的通知

[Android][Parse]推送通知-当处于某个活动中并执行某个方法时,拦截应用程序内的通知,android,parse-platform,notifications,push-notification,broadcastreceiver,Android,Parse Platform,Notifications,Push Notification,Broadcastreceiver,我已经在我的Android应用程序上实现了解析推送通知服务,并将这些行添加到AndroidManifest.xml: <service android:name="com.parse.PushService" /> <receiver android:name="com.parse.ParseBroadcastReceiver"> <intent-filter> <action android:name="

我已经在我的Android应用程序上实现了解析推送通知服务,并将这些行添加到
AndroidManifest.xml

<service android:name="com.parse.PushService" />
    <receiver android:name="com.parse.ParseBroadcastReceiver">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <action android:name="android.intent.action.USER_PRESENT" />
        </intent-filter>
    </receiver>
    <receiver android:name="com.parse.ParsePushBroadcastReceiver"
        android:exported="false">
        <intent-filter>
            <action android:name="com.parse.push.intent.RECEIVE" />
            <action android:name="com.parse.push.intent.DELETE" />
            <action android:name="com.parse.push.intent.OPEN" />
        </intent-filter>
    </receiver>
    <receiver android:name="com.parse.GcmBroadcastReceiver"
        android:permission="com.google.android.c2dm.permission.SEND">
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            <action android:name="com.google.android.c2dm.intent.REGISTRATION" />

            <category android:name="my.package.name" />
        </intent-filter>
    </receiver>
现在,我不知道该怎么做,只有在具体的活动中(例如,
MyActivity
),我才想“截获”对类型标记有一定价值的推送通知(例如,那些是“type_1”)并执行一个方法(例如,
refreshView
)在该活动上,启动一个异步任务,从服务器检索数据并根据它刷新一些可视元素。如果用户处于另一个活动中(不是
MyActivity
),则推送通知应正常接收,不会被拦截

我试图实现一个广播接收器,但没有成功。我怎样才能做到这一点


谢谢。

您可以尝试动态注册和取消注册一个适当的
接收者来接收通知。
因此,例如,在您希望作为“倾听”的活动中,请尝试:

至于现在,我没有尝试这个解决方案,但是如果您使用这个解决方案,您就不应该使用清单注册的接收器,因为它将不再依赖于应用程序生命周期(即,接收器运行与应用程序的状态无关)

如果您不想让android manifest registere接收器保持不变,那么一个好主意可能是在监听活动进入前台时将静态布尔变量设置为true,在监听活动关闭时设置为false,然后接收器可以基于该布尔值执行操作

不管怎样,看一看和


干杯

您可以将它们保存在SharedPreference中,并在输入MyActivity时检索它们,然后执行与我想要的内容无关的操作。我希望,当我在一个活动中时,如果我收到一个通知,能够截获它并对该活动执行一个方法。我不需要进入任何活动,因为我已经在其中。
alert: "message to show",
type: "type_1",
data: "some_data"
private BroadcastReceiver receiver; // Maybe is a good idea to subclass ParsePushBroadcastreceiver...
IntentFilter filter;

@Override
public void onCreate(Bundle savedInstanceState){   
  filter = new IntentFilter();
  filter.addAction("SOME_ACTION");

  receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
      // Received!
    }
  }
  registerReceiver(receiver, filter); // Actually don't know if it is necessary since i register the receiver in onResume() also...
}

@Override
protected void onResume() {
     super.onResume();
     registerReceiver(mReciever, mIntentFilter); // Listen when activity goes in foreground
}

@Override
protected void onPause() {
    super.onPause();
    unregisterReceiver(receive); // Don't listen when activity is not in foreground
}

@Override
protected void onDestroy() {
  super.onDestroy();
  unregisterReceiver(receiver); // Avoid LEAKED RECEIVER!
}