在解析推送通知自定义接收器

时间:2015-07-28 14:35:46

标签: android parse-platform push-notification broadcastreceiver

我有一个使用解析推送通知服务的应用程序。以下是我用于接收通知的课程:

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>

通知系统一切都很好。收到通知后,我想相应地更新运行活动用户界面(比如显示新通知的图标),但我无法通过onReceive方法访问活动对象。这样做的最佳做法是什么?我无法在这个问题上使用上下文对象。 感谢

1 个答案:

答案 0 :(得分:2)

我相信你可以通过使用BroadcastReceiver来实现这一目标。

您可以在要访问的活动中定义接收者, 请参阅下面的代码段。

assert_raises

然后在您的自定义接收器中发送广播。

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);
     }
}