如何知道Android应用程序的应用程序状态是否显示通知?

时间:2015-11-20 11:55:38

标签: android android-activity push-notification

我正在开发使用 Google Cloud Messaging 的即时消息应用程序。当用户收到来自联系人的消息时,我会发送通知。一切正常。我设置了 GCMBroadcastReceiver GCMMessageHandler 。问题是:即使用户当前正在与他的联系人聊天,通知也会始终显示。 如何知道GCMMessageHandler中的应用程序状态不显示通知?

这是GCMBroadcastReceiver:

public class GcmBroadcastReceiver extends WakefulBroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {

    // Explicitly specify that GcmMessageHandler will handle the intent.
    ComponentName comp = new ComponentName(context.getPackageName(),
            GcmMessageHandler.class.getName());

    // Start the service, keeping the device awake while it is launching.
    startWakefulService(context, (intent.setComponent(comp)));
    setResultCode(Activity.RESULT_OK);
}

}

这是GCMMessageHandler:

protected void onHandleIntent(Intent intent) {
    Bundle extras = intent.getExtras();

    GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(this);
    String messageType = gcm.getMessageType(intent);

    mes = extras.getString("message");

    if(IM_NOT_IN_THE_CHAT_ACTIVITY)
    {
        showNotification(mes);
    }

我努力获得的是那面旗帜: IM_NOT_IN_THE_CHAT_ACTIVITY。

我如何在IntentService中知道这一点?

1 个答案:

答案 0 :(得分:0)

这样做可以解决这个问题:

    ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
    List< ActivityManager.RunningTaskInfo > taskInfo = am.getRunningTasks(1);
    String activity_name = taskInfo.get(0).topActivity.getClassName();


    if(activity_name != ACTIVITY_NAME)
        showNotification(mes);