【问题标题】:Xamarin Android Wear: Get the currently clicked Notification IDXamarin Android Wear:获取当前点击的通知 ID
【发布时间】:2016-11-17 09:04:20
【问题描述】:

我尝试使用PutExtra & GetIntExtra,但是通知id总是被最后一个通知覆盖,所有通知值都是一样的。请告诉我如何解决它,

提前致谢!

        Intent actionIntent = new Intent(this, typeof(ConfirmActivity));
        actionIntent.PutExtra("NOTIFY_ID", 1);
        PendingIntent actionPendingIntent = PendingIntent.GetActivity(this, 0, actionIntent, PendingIntentFlags.UpdateCurrent);
        NotificationCompat.Action action = new NotificationCompat.Action.Builder(Resource.Drawable.ic_done_white_64dp_1x,
                    this.Resources.GetString(Resource.String.confirm), actionPendingIntent)
                    .Build();

        var notification = new NotificationCompat.Builder(this)
            .SetContentTitle("1111")
            .SetContentText("1111111111111111111111")
            .SetSmallIcon(Resource.Drawable.Icon).Extend(new NotificationCompat.WearableExtender().AddAction(action)).Build();

        var manager = NotificationManagerCompat.From(this);
        manager.Notify(1, notification);


        Intent actionIntent2 = new Intent(this, typeof(ConfirmActivity));
        actionIntent2.PutExtra("NOTIFY_ID", 2);
        PendingIntent actionPendingIntent2 = PendingIntent.GetActivity(this, 0, actionIntent2, PendingIntentFlags.UpdateCurrent);
        NotificationCompat.Action action2 = new NotificationCompat.Action.Builder(Resource.Drawable.ic_done_white_64dp_1x,
                    this.Resources.GetString(Resource.String.confirm), actionPendingIntent2)
                    .Build();

        var notification2 = new NotificationCompat.Builder(this)
            .SetContentTitle("2222")
            .SetContentText("22222222222222222222")
            .SetSmallIcon(Resource.Drawable.Icon).Extend(new NotificationCompat.WearableExtender().AddAction(action2)).Build();
        manager.Notify(2, notification2);

=================================

    [Activity(Label = "ConfirmActivity")]
    public class ConfirmActivity : Activity
    {
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            SetContentView(Resource.Layout.Confirm);
            Intent intent = this.Intent;

            int NOTIFY_ID = intent.GetIntExtra("NOTIFY_ID", 0);  //always 2
        }
    }

【问题讨论】:

    标签: xamarin.android wear-os android-wear-notification


    【解决方案1】:

    您可能想查看此thread。它建议将 Bundle 与 PendingIntent 一起传递给下一个 Activity。

    Bundle bundle = new Bundle();
    bundle.putString("Any String");
    NotificationManager notifManager = (NotificationManager) this.getSystemService(this.NOTIFICATION_SERVICE);
    int uniqueInteger = //create a unique Integer        
    int icon = R.drawable.ic_launcher;
    NotificationCompat2.Builder mNotification = new NotificationCompat2.Builder(this).setSmallIcon(icon)
                    .setContentTitle(contentTitle).setContentIntent(getPendingIntent(bundle, uniqueInteger));
    
    mNotification.setDefaults(Notification.DEFAULT_LIGHTS | Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE);
    mNotification.setAutoCancel(true);
    notifManager.notify(uniqueInteger, mNotification.build());
    

    这里有一些相关的 SO 帖子可能会有所帮助:

    【讨论】:

    • 谢谢,我发现的问题是我没有使用唯一的请求代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-06
    • 2017-09-02
    • 1970-01-01
    • 1970-01-01
    • 2016-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多