根据通知重定向到特定屏幕 - android

问题描述 投票:0回答:2

我的应用程序中有三个不同的屏幕:

  • 读,
  • 走路,和
  • 睡眠

如何在每个屏幕中标识要重定向的特定通知?

android notifications
2个回答
1
投票

为此,您必须指定使用PendingIntent对象定义的内容意图,并将其传递给setContentIntent()。

以下代码段显示了当用户点按通知时如何创建打开活动的基本意图:

// Create an explicit intent for an Activity in your app
Intent intent = new Intent(this, Reading.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this, CHANNEL_ID)
        .setSmallIcon(R.drawable.notification_icon)
        .setContentTitle("My notification")
        .setContentText("Hello World!")
        .setPriority(NotificationCompat.PRIORITY_DEFAULT)
        // Set the intent that will fire when the user taps the notification
        .setContentIntent(pendingIntent)
        .setAutoCancel(true);

这在Android developer site中有明确提及


0
投票
private final String CHANNEL_ID = "channel1";
private final String CHANNEL_NAME = "channel_one";
private NotificationManager notificationManager;

private NotificationManager getNotificationManager() {
    if (notificationManager == null) {
        notificationManager = (NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
        return notificationManager;
    } else {
        return notificationManager;
    }
}

Intent intent = new Intent(this, YourActivity.class);
intent.putExtra("type", "type");
//intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, (int) (Math.random() * 100), intent, PendingIntent.FLAG_ONE_SHOT);

NotificationCompat.Builder builder = null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    NotificationChannel channel = new NotificationChannel(CHANNEL_ID, CHANNEL_NAME, NotificationManager.IMPORTANCE_DEFAULT);
    channel.enableLights(true);
    channel.enableVibration(true);
    channel.setLightColor(Color.BLUE);
    channel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);
    channel.setShowBadge(true);
    getNotificationManager().createNotificationChannel(channel);

    builder = new NotificationCompat.Builder(getApplicationContext(), CHANNEL_ID);
    builder.setColorized(true);
    builder.setChannelId(CHANNEL_ID);
    builder.setColor(ContextCompat.getColor(this,R.color.colorPrimaryDark));
    builder.setBadgeIconType(NotificationCompat.BADGE_ICON_NONE);
} else {
    builder = new NotificationCompat.Builder(getApplicationContext(), CHANNEL_ID);
}

builder.setContentTitle("Title");
builder.setContentText("Message");
Uri notificationSound = RingtoneManager.getActualDefaultRingtoneUri(this, RingtoneManager.TYPE_NOTIFICATION);
builder.setSound(notificationSound);
builder.setAutoCancel(true);
builder.setSmallIcon(R.drawable.ic_bottom_logo);
builder.setLargeIcon(/*BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher)*/getBitmapFromDrawable(ContextCompat.getDrawable(getApplicationContext(), R.mipmap.ic_launcher)));
builder.setContentIntent(pendingIntent);
getNotificationManager().notify((int) SystemClock.uptimeMillis(), builder.build());
© www.soinside.com 2019 - 2024. All rights reserved.