仅在执行某些功能后显示收到的推送通知

时间:2014-02-12 10:43:16

标签: android push-notification urbanairship.com

现在我这样做了:Onclick通知将导致我从那里调用一个asynctask然后显示结果的活动,但我需要像whatsapp一样的快速加载效果。所以,我需要在显示通知之前加载整个数据(asynctask),这意味着我必须在通知执行后只在通知栏上显示通知消息时才调用asynctask来查看通知。

这是我的BroadcastReceiver

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

import com.urbanairship.UAirship;
import com.urbanairship.push.PushManager;

public class IntentReceiver extends BroadcastReceiver {

private static final String logTag = "PushSample";

@Override
public void onReceive(Context context, Intent intent) {
    Log.i(logTag, "Received intent: " + intent.toString());
    String action = intent.getAction();

    if (action.equals(PushManager.ACTION_PUSH_RECEIVED)) {

        int id = intent.getIntExtra(PushManager.EXTRA_NOTIFICATION_ID, 0);

        Log.i(logTag, "Received push notification. Alert: " 
                + intent.getStringExtra(PushManager.EXTRA_ALERT)
                + " [NotificationID="+id+"]");

    } else if (action.equals(PushManager.ACTION_NOTIFICATION_OPENED)) {

        Log.i(logTag, "User clicked notification. Message: " + intent.getStringExtra(PushManager.EXTRA_ALERT));
        String caseId = intent.getStringExtra("caseId");
        Log.i(logTag, "CaseID is: " + caseId);
        Intent launch = new Intent(Intent.ACTION_MAIN);

        launch.setClass(UAirship.shared().getApplicationContext(), CaseDetailActivity.class);
        launch.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        launch.putExtra("caseId", caseId);

        UAirship.shared().getApplicationContext().startActivity(launch);

    } else if (action.equals(PushManager.ACTION_REGISTRATION_FINISHED)) {
        Log.i(logTag, "Registration complete. APID:" + intent.getStringExtra(PushManager.EXTRA_APID)
                + ". Valid: " + intent.getBooleanExtra(PushManager.EXTRA_REGISTRATION_VALID, false));
    }

}
}

0 个答案:

没有答案