【问题标题】:Start activity from notification and run some code automatic从通知开始活动并自动运行一些代码
【发布时间】:2018-07-13 05:38:11
【问题描述】:

需要帮助。 我有一个通知,当触摸打开一项活动时。 在该活动中,我有一个带有某些类型视图的地图(默认情况下,我需要按一个按钮才能获得额外的视图)。 我想要做的是每次我触摸通知时,我的活动都会以一个特定的视图打开(其中一个我需要按下才能查看)。

换句话说,我需要打开我的活动并自动运行导致一个特定视图的代码,但仅当活动从我的通知开始时。

我的通知代码:

Intent notificationIntent = new Intent(getApplicationContext(), mapa.class);

加载活动后我需要运行以获取视图的代码:

   mLocationDisplay.setAutoPanMode(LocationDisplay.AutoPanMode.RECENTER);
                if (!mLocationDisplay.isStarted())
                    mLocationDisplay.startAsync();
                break;

【问题讨论】:

  • 您是否尝试过在通知意图中包含额外的内容?然后在您的活动中,您可以使用getIntent().getExtra(...) 检查活动是否是从通知触发的。

标签: android android-intent android-activity notifications


【解决方案1】:

你可以通过从意图中传递一个值来做到这一点

Intent notificationIntent = new Intent(getApplicationContext(), mapa.class);
notificationIntent.putExtra("IS_FROM_NOTIFICATION",true);

关于你的活动

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Intent intent = getIntent();
        boolean isFromNotification = 
        intent.getBooleanExtra("IS_FROM_NOTIFICATION",false);
        if (isFromNotification){
            //call the method
mLocationDisplay.setAutoPanMode(LocationDisplay.AutoPanMode.RECENTER);
                if (!mLocationDisplay.isStarted())
                    mLocationDisplay.startAsync();
        }
    }

这条线的意思是intent.getBooleanExtra("IS_FROM_NOTIFICATION",false);

获取通过键"IS_FROM_NOTIFICATION" 传递的值,如果该值存在则返回该值,否则返回默认值在此示例中我选择默认值为 false

【讨论】:

  • 完美,有效!很多 thks Assadi!只是一个更正: Intent notificationIntent = new Intent(getApplicationContext(), mapa.class); notificationIntent.putExtra("IS_FROM_NOTIFICATION",true);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多