收到推送通知时打开Android应用程序

时间:2013-10-13 05:58:35

标签: android notifications

当收到通知时,我的Android应用程序会在通知中心点击通知时打开,但同时我也要打开我的滑动抽屉.. 这是我的代码

IntentReceiver.class(自定义推送接收器)

     String action = intent.getAction();
    if (action.equals(PushManager.ACTION_NOTIFICATION_OPENED)) {
          Log.i(logTag, "User clicked notification. Message: " + intent.getStringExtra(PushManager.EXTRA_ALERT));

        //  logPushExtras(intent);
          if(!MainActivity.active){
          Intent launch = new Intent(Intent.ACTION_MAIN);
          launch.setClass(UAirship.shared().getApplicationContext(), MainActivity.class);
          launch.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
          UAirship.shared().getApplicationContext().startActivity(launch);
          }

  }
}

这是主要的活动..

public static boolean active;

我想添加以下内容

 final SlidingDrawer banner = (SlidingDrawer) findViewById(R.id.slidingDrawer1);
        banner.animateOpen();

任何人都可以告诉我该怎么做.. 通过通知打开应用程序时打开滑动抽屉。

1 个答案:

答案 0 :(得分:2)

你的问题有点不清楚。据我了解,您有一个主要活动,可以从启动器或通知意图打开。您希望在通知意图启动活动时打开滑动抽屉,而不是从启动器启动活动时。 如果是这种情况,您只需在创建Intent.putExtra()意图时使用launch,然后在活动开启时检查额外费用。

IntentReceiver.class之前添加到startActivity(launch)

launch.putExtra("notification", "true");

Main Activity

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.yourlayoutfile);

    final SlidingDrawer banner = (SlidingDrawer) findViewById(R.id.slidingDrawer1);

    Intent intent = getIntent();
    String extra = intent.getStringExtra("notification");

    if(extra != null && extra.equals("true") && (intent.getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) == 0)
    {
        banner.animateOpen();
    }
}

FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY检查是为了确保意图来自您的接收者,而不是最近的缓存意图。

正如FYI一样,SlidingDrawer已被弃用。