当前正在使用相同的活动时,从通知栏启动新活动

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当前正在使用相同的活动时,从通知栏启动新活动相关的知识,希望对你有一定的参考价值。

我从通知按钮启动一个特定的Activity。如果我当前没有打开该特定活动,它将作为新活动启动活动。但是,当我打开该特定活动时,向下滚动通知然后单击该按钮,它将无效,因为活动已经打开。我需要将它作为一个新的打开,因为新的值将传递给它。我可以使用SharedPreferences来做到这一点,但我不愿意。请帮忙

        intent = new Intent(context,AppReport.class);
        intent.putExtra("name",packageInstallName); //this does not get send over
        intent.putExtra("version",packageInstallVersion);
        PendingIntent testing = PendingIntent.getActivity(context, 0, intent, Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
        setOnClickPendingIntent(buttons[1],testing);

这是从通知栏启动活动的方式。我尝试了FLAG_UPDATE_CURRENT作为标志但也没有用。

答案

将您的活动设为singleTop

<activity
        android:name=".AppReport"
        android:configChanges="screenSize|keyboard|orientation|screenSize"
        android:label="@string/app_name"
        android:launchMode="singleTop"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme.NoActionBar"
        android:windowSoftInputMode="stateHidden"/>

intent = new Intent(context,AppReport.class);
    intent.putExtra("name",packageInstallName); //this does not get send over
    intent.putExtra("version",packageInstallVersion);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
    PendingIntent testing = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

在Activity中覆盖onNewIntent(Intent intent)

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    //Do your stuff
}

以上是关于当前正在使用相同的活动时,从通知栏启动新活动的主要内容,如果未能解决你的问题,请参考以下文章

意图 - 如果活动正在运行,请将其放在前面,否则启动一个新活动(来自通知)

从 android 推送通知单击启动时,意图数据未在活动中更新

从通知意图启动活动时重新创建 Android ViewModel

无法从通知中打开活动

推送通知打开一个新活动

如何在通知单击时重新启动/刷新活动内容