當我想上一個通知(歸檔)時,一些關於它的一個點擊喜歡的按鈕添加一個動作,它顯示了一個敬酒的消息,下面是一個示例圖像:Android通知按鈕(的addAction)敬酒消息按下
var contentIntent = PendingIntent.GetActivity(context, 0, resultIntent, PendingIntentFlags.CancelCurrent);
這是我的通知卜ilder代碼:
var builder = new NotificationCompat.Builder(context)
.SetContentIntent(contentIntent).SetSmallIcon(Resource.Drawable.ic_launcher)
.SetContentTitle(title)
.SetStyle(style).SetWhen(Java.Lang.JavaSystem.CurrentTimeMillis())
.AddAction(Resource.Drawable.tick_notify, "ARCHIVE", contentIntent)
.AddAction(Resource.Drawable.cancel_notify, "REPLY", pIntent)
.SetAutoCancel(true);
//check bewlow
builder.SetDefaults((int)(NotificationDefaults.Sound | NotificationDefaults.Vibrate));
所以一般我想打一個按鈕進行通知,而不是推出一個活動等
幫我在這的Xamarin.android是新請。
EDITTED:
這是我完整的代碼,根據答案你提供我,但stilll正在一個例外:
using System;
using Android.App;
using Android.Content;
using Android.Media;
using Android.Support.V4.App;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Globalization;
using Android.Widget;
namespace Diabetes.Droid
{
[BroadcastReceiver]
[IntentFilter(new string[] { "android.intent.action.BOOT_COMPLETED" }, Priority = (int)IntentFilterPriority.LowPriority)]
public class AlarmReceiver : BroadcastReceiver
{
public override void OnReceive(Context context, Intent intent)
{
var message = intent.GetStringExtra("message");
var title = intent.GetStringExtra("title");
//Show toast here
Toast.MakeText(context, "Hello it's me ", ToastLength.Short).Show();
var extras = intent.Extras;
if (extras != null && !extras.IsEmpty)
{
NotificationManager manager_ = context.GetSystemService(Context.NotificationService) as NotificationManager;
var notificationId = extras.GetInt("NotificationIdKey", -1);
if (notificationId != -1)
{
manager_.Cancel(notificationId);
}
}
AlarmReceiver customReceiver = new AlarmReceiver();
//Create intent for action 1 (TAKE)
var actionIntent1 = new Intent();
actionIntent1.SetAction("ARCHIVE");
var pIntent1 = PendingIntent.GetBroadcast(context, 0, actionIntent1, PendingIntentFlags.CancelCurrent);
//Create intent for action 2 (REPLY)
var actionIntent2 = new Intent();
actionIntent2.SetAction("REPLY");
var pIntent2 = PendingIntent.GetBroadcast(context, 0, actionIntent2, PendingIntentFlags.CancelCurrent);
Intent resultIntent = context.PackageManager.GetLaunchIntentForPackage(context.PackageName);
/*
var resultIntent = new Intent(context, typeof(MainActivity));
resultIntent.SetFlags(ActivityFlags.NewTask | ActivityFlags.ClearTask);*/
var contentIntent = PendingIntent.GetActivity(context, 0, resultIntent, PendingIntentFlags.CancelCurrent);
var pending = PendingIntent.GetActivity(context, 0,
resultIntent,
PendingIntentFlags.CancelCurrent);
// Instantiate the Big Text style:
Notification.BigTextStyle textStyle = new Notification.BigTextStyle();
var builder =
new Notification.Builder(context).SetContentTitle("Diabetics Reminder")
.SetDefaults(NotificationDefaults.Sound)
.AddAction(Resource.Drawable.tick_notify, "REPLY", pIntent1)
.AddAction(Resource.Drawable.cancel_notify, "ARCHIVE", pIntent2)
.SetSmallIcon(Resource.Drawable.ic_launcher).SetStyle(new Notification
.BigTextStyle()
.SetSummaryText("")
.SetBigContentTitle(title)
.BigText(message)
)
.SetDefaults(NotificationDefaults.All);
builder.SetContentIntent(pending);
var notification = builder.Build();
//Add intent filters for each action and register them on a broadcast receiver
var intentFilter = new IntentFilter();
intentFilter.AddAction("ARCHIVE");
intentFilter.AddAction("REPLY");
context.RegisterReceiver(customReceiver, intentFilter);
var manager = NotificationManager.FromContext(context);
manager.Notify(10010, notification);
}
}
}
這是錯誤圖片:
我試圖實現你的答案@Rendy,但我得到一個錯誤,所以請我的完整的代碼我已經更新我的職務 –