处理通知栏上的单击事件,该事件将用户重定向到应用程序Lollipop

时间:2018-09-01 21:04:05

标签: android xamarin xamarin.android

当用户单击通知栏上我的应用程序的图标时,用户将被重定向到我的应用程序。

enter image description here

任何人都可以提供示例代码吗?如何订阅click事件以及重定向。

更新

我的应用程序可能正在使用某些导致通知栏上显示图标的服务。

我的应用程序正在调用SetForeground,而不是getBroadcast()。

更新2

如何将用户重定向到上一个活动而不是硬代码活动?例如,当用户导航到其他活动时,上一个活动可能会有所不同。

Notification click event in xamarin forms

1 个答案:

答案 0 :(得分:0)

这是我的应用程序中的示例,可以正常工作。我想您可以做类似的事情。

public class AlarmReceiver extends BroadcastReceiver {
    public final static String NOTIF_TEXT =  AlarmSetActivity.class.getPackage() + ".NOTIF_TEXT";

    private String notifText;

    @Override
    public void onReceive(Context context, Intent intent) {

        notifText = intent.getExtras().getString(NOTIF_TEXT);
        //().getExtras().getString(NOTE_BODY); 
        Toast.makeText(context, "Notification from " + R.string.app_name,
                Toast.LENGTH_LONG).show();
        buildNotification(context);
    }

    private void buildNotification(Context context) {

        NotificationManager notificationManager = (NotificationManager) context
                .getSystemService(Context.NOTIFICATION_SERVICE);


        String channelId = "default_channel_id";
        String channelDescription = "Default Channel";

        Notification.Builder builder = new Notification.Builder(context);

       Intent intent = new Intent(context, **EditorActivity.class**);
        PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,
                intent, 0);

        builder.setSmallIcon(R.mipmap.ic_launcher)
                .setContentTitle(context.getString(R.string.notificTitle)).setContentText(notifText)
                .setContentInfo(context.getString(R.string.notificInfo)).setTicker(context.getString(R.string.notifTicker))
                .setLights(0xFFFF0000, 500, 500)
                //.setChannelId(id)
                .setContentIntent(pendingIntent).setAutoCancel(true);

        Notification notification = builder.build();
        //notification.so

        notificationManager.notify(2, notification);
    }
}

并且:

private void setAlarm(Calendar targetCal) {
    mTimeTextView.setText(R.string.alarm_on);
    mTimeTextView.append(String.valueOf(targetCal.getTime()));

    Intent intent = new Intent(getApplicationContext(), AlarmReceiver.class);
    intent.putExtra(AlarmReceiver.NOTIF_TEXT,notificationText);

    PendingIntent pendingIntent = PendingIntent.getBroadcast(
            getApplicationContext(), RQS_TIME, intent, 0);

    AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(),
            pendingIntent);
}