在解析推送通知自定义接收器中访问 运行 activity
get access to running activity in parse push notification custom receiver
我有一个使用解析推送通知服务的应用程序。这是我用来接收通知的 class:
public class MessageReceiver extends ParsePushBroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//...some code in here
}
而且我还在我的清单中注册了这个自定义接收器:
<receiver
android:name="com.package.MessageReceiver"
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>
通知系统一切正常。收到通知后,我想相应地更新 运行 activity UI(比如显示新通知的图标)但我无权访问 activity onReceive
方法中的对象。这样做的最佳做法是什么?我不能在这件事上使用上下文对象。
谢谢
我相信您可以使用 BroadcastReceiver 来完成此操作。
您可以在您想要访问的活动中定义接收者,
请参阅下面的代码段。
public MyActivity extends Activity
{
//... code
private BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//... update ui here
}
};
@Override
protected void onResume() {
IntentFilter filter = new IntentFilter();
filter.addAction("suitablename");
registerReceiver(receiver, filter);
super.onResume();
}
@Override
protected void onPause() {
unregisterReceiver(receiver);
super.onPause();
}
//... code
}
然后在您的自定义接收器中发送广播。
public class MessageReceiver extends ParsePushBroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//...some code in here
Intent intent = new Intent();
intent.setAction("suitablename");
context.sendBroadcast(intent);
}
}
别忘了更新清单
<activity
android:name=".MyActivity" >
<intent-filter>
<action android:name="suitablename"></action>
</intent-filter>
</activity>
我有一个使用解析推送通知服务的应用程序。这是我用来接收通知的 class:
public class MessageReceiver extends ParsePushBroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//...some code in here
}
而且我还在我的清单中注册了这个自定义接收器:
<receiver
android:name="com.package.MessageReceiver"
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>
通知系统一切正常。收到通知后,我想相应地更新 运行 activity UI(比如显示新通知的图标)但我无权访问 activity onReceive
方法中的对象。这样做的最佳做法是什么?我不能在这件事上使用上下文对象。
谢谢
我相信您可以使用 BroadcastReceiver 来完成此操作。
您可以在您想要访问的活动中定义接收者, 请参阅下面的代码段。
public MyActivity extends Activity
{
//... code
private BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//... update ui here
}
};
@Override
protected void onResume() {
IntentFilter filter = new IntentFilter();
filter.addAction("suitablename");
registerReceiver(receiver, filter);
super.onResume();
}
@Override
protected void onPause() {
unregisterReceiver(receiver);
super.onPause();
}
//... code
}
然后在您的自定义接收器中发送广播。
public class MessageReceiver extends ParsePushBroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//...some code in here
Intent intent = new Intent();
intent.setAction("suitablename");
context.sendBroadcast(intent);
}
}
别忘了更新清单
<activity
android:name=".MyActivity" >
<intent-filter>
<action android:name="suitablename"></action>
</intent-filter>
</activity>