【问题标题】:Get pending intent extra in activity with launcher flag使用启动器标志在活动中获得额外的待处理意图
【发布时间】:2015-12-17 17:58:45
【问题描述】:

在我的应用中,我在某些情况下会显示通知,当用户点击通知时,它会通过以下代码导航到应用:

Intent onNotificationClicked = new Intent(G.context, MainActivity.class);
onNotificationClicked.putExtra("DO", "clicked");
onNotificationClicked.setAction(Intent.ACTION_MAIN);
onNotificationClicked.addCategory(Intent.CATEGORY_LAUNCHER);
PendingIntent ponNotificationClicked = PendingIntent.getActivity(ctx, 113, onNotificationClicked, PendingIntent.FLAG_UPDATE_CURRENT);
this.contentIntent = ponNotificationClicked;

现在在我的 MainActivity 中,我想获得此意图的额外内容。但这不可用,因为此意图不会创建新活动,只是将启动的活动带到前面。所以我如何在我的应用程序中处理这种意图.

谢谢

【问题讨论】:

  • 如下所示设置意图标志,使其不会创建新的活动 intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
  • 你可以使用 intent.putExtra 和 getExtra 方法...
  • 在哪里?我应该在 oncreate 或 onrestart() 中使用主题吗??
  • 你的意思是 getExtraa() ?然后 onResume()
  • 是的,我在哪里放 getExtra();

标签: android android-intent notifications


【解决方案1】:

我找到了答案:

在您的活动清单中设置:

android:launchMode="singleTask"

然后对于您的待处理意图,您应该这样设置:

Intent onNotificationClicked = new Intent(G.context, MainActivity.class);
onNotificationClicked.putExtra("DO", "clicked");
PendingIntent ponNotificationClicked = PendingIntent.getActivity(ctx, 113, onNotificationClicked, PendingIntent.FLAG_UPDATE_CURRENT);
this.contentIntent = ponNotificationClicked;

现在在您的活动中覆盖 onNewIntent 并在其中写入您的函数:

 @Override
protected void onNewIntent(Intent intent) {

    String action = intent.getStringExtra("DO");

    if (action != null) {
        Log.d("this is creating", "shiva said right");
        mSlidingLayout.setPanelState(SlidingUpPanelLayout.PanelState.EXPANDED);

    }
    super.onNewIntent(intent);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-01
    • 2014-11-04
    • 1970-01-01
    • 2016-06-02
    • 1970-01-01
    相关资源
    最近更新 更多