当前位置: 首页 > 知识库问答 >
问题:

单击正在进行的通知时返回上一个活动

别帅
2023-03-14

在没有新意图的情况下,如何从通知返回到活动

还有这个

通知单击:活动已打开

    Intent resultIntent = new Intent(this, ProtocolMonitorActivity.class);

    TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
    stackBuilder.addParentStack(ProtocolMonitorActivity.class);
    stackBuilder.addNextIntent(resultIntent);

    PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0,
            PendingIntent.FLAG_UPDATE_CURRENT);

    NotificationCompat.Builder notiBuilder = new NotificationCompat.Builder(
            this).setSmallIcon(R.drawable.noti_icon)
            .setContentTitle("Protocol Monitor App")
            .setContentText("Service is running")
            .setOngoing(true);
    notiBuilder.setContentIntent(resultPendingIntent);

    notiManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    notiManager.notify(notiId, notiBuilder.build());
<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

    <activity
        android:name=".ProtocolMonitorActivity"
        android:label="@string/app_name"
        android:process="com.android.phone"
        android:launchMode="singleTop"
        android:screenOrientation="portrait" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
            <category android:name="android.intent.category.DEVELOPMENT_PREFERENCE" />
        </intent-filter>

        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value=".ProtocolMonitorActivity" />

    </activity>
</application>

共有1个答案

段干楚青
2023-03-14

不能使用taskstackbuilder执行此操作。TaskStackBuilder的行为是它总是清除任务(重新创建任何活动)。

你只需要一个“启动意图”就可以把你的任务放到前台,不管它碰巧处于什么状态。有两种方法可以做到这一点:

变式1:

final Intent notificationIntent = new Intent(this, ProtocolMonitorActivity.class);
notificationIntent.setAction(Intent.ACTION_MAIN);
notificationIntent.addCategory(Intent.CATEGORY_LAUNCHER);
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
final Intent notificationIntent = 
        PackageManager.getLaunchIntentForPackage(getPackageName());
PendingIntent resultPendingIntent = PendingIntent.getActivity(this, 0,
        notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);

NotificationCompat.Builder notiBuilder = new NotificationCompat.Builder(
        this).setSmallIcon(R.drawable.noti_icon)
        .setContentTitle("Protocol Monitor App")
        .setContentText("Service is running")
        .setOngoing(true);
notiBuilder.setContentIntent(resultPendingIntent);

notiManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notiManager.notify(notiId, notiBuilder.build());
 类似资料:
  • 我正在工作的应用程序中,我被要求显示通知。对于通知,我使用的是FireBase云消息(FCM)。我能够得到通知,当应用程序在后台。 2.)MyFirebaseInstanceIDService 这是我在MyFirebaseMessagingService类中为onMessageReceived()方法编写的代码示例。

  • 我有一个带有通知的应用程序,如果我单击它们,就会打开某个活动。我想要的是,如果我点击通知,活动已经打开,它不是重新开始,但只是出现在前面。 我可以用标志来管理它吗?还是我应该在SharedPreferences中存储一个变量来检查它是否已打开? 谢谢!

  • 我目前遇到以下问题: 我已经实现了自定义FirebaseMessagingService,并且覆盖了方法onMessageReceived()。此外,当应用程序在后台时,我从getExtras()获取捆绑包 我需要通知内容,以便在db中本地保存 发生了什么: 当应用程序处于后台时,从Firebase控制台发送3个通知 创建了3个状态栏通知 单击其中一个- 你能帮忙吗? 启动器活动代码: 自定义Fi

  • 问题内容: 我试图将我在教程中找到的一些代码转换为自己使用。最初,当用户单击我的应用程序生成的通知时,该代码启动了系统联系人列表。我正在尝试自己启动一个,而不是启动联系人列表,但是它不起作用。更具体地说,什么也没有发生。没有错误,我也不会加载。单击后,通知窗口消失,原始窗口仍然可见。 这是我的代码: 这是我在文件中的条目… 这是我要启动的… 问题答案: 我解决了这个问题。我忘记在清单文件的活动声明

  • 我有一个活动正在执行一些下载功能。该活动将弹出一个进度对话框,在下载时禁用用户交互,并创建一个通知进度。 设置意向标志