1

当收到通知时,当从通知中心单击通知时,我的 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();

谁能告诉我该怎么做。通过通知打开应用程序时打开滑动抽屉。

4

1 回答 1

2

你的问题有点不清楚。据我了解,您有一个可以从启动器或通知意图打开的主要活动。您希望在 Activity 由通知 Intent 启动时打开滑动抽屉,而不是在从启动器启动时打开。如果是这种情况,您只需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检查是为了确保意图来自您的接收者,而不是最近缓存的意图。

仅供参考,SlidingDrawer 已被弃用。

于 2013-10-13T07:03:34.147 回答