I need an app to create Notifications, which should be there after the app is closed, for another app should read them after some time passes.
I followed a tutorial: https://www.youtube.com/watch?v=UqR7YinI7k4
And later, found out, that I need another implementation, due to higher SDK version.
I came to find this answer, which states, that I need to use a NotificationChannel, to do this:
Failed to post notification on channel "null" Target Api is 26
But, I still got stuck, here is my code:
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.activity_main);
var btnSend = FindViewById<Button>(Resource.Id.btnSend);
btnSend.Click += (s, e) =>
{
Bundle valueSend = new Bundle();
valueSend.PutString("sendContent", "STF content");
Intent intent = new Intent(this, typeof(SecondActivity));
intent.PutExtras(valueSend);
int NOTIFICATION_ID = 234;
NotificationManager notificationManager = (NotificationManager)this.GetSystemService(Context.NotificationService);
string CHANNEL_ID = "my_channel_01";
string name = "my_channel";
string Description = "This is my channel";
NotificationChannel mChannel = new NotificationChannel(CHANNEL_ID, name, NotificationManager.ImportanceHigh);
mChannel.Description = Description;
mChannel.EnableLights(true);
Android.Support.V4.App.TaskStackBuilder stackBuilder = Android.Support.V4.App.TaskStackBuilder.Create(this);
stackBuilder.AddParentStack(Java.Lang.Class.FromType(typeof(SecondActivity)));
stackBuilder.AddNextIntent(intent);
PendingIntent resultPendingIntent = stackBuilder.GetPendingIntent(0, (int)PendingIntentFlags.UpdateCurrent);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID)
.SetAutoCancel(true) // Dismiss the notification from the notification area when the user clicks on it
.SetContentIntent(resultPendingIntent) // Start up this activity when the user clicks the intent.
.SetContentTitle("Notifications") // Set the title
.SetSmallIcon(Resource.Drawable.navigation_empty_icon)
.SetContentText("STF Content text"); // the message to display.
notificationManager.Notify(NOTIFICATION_ID, builder.Build());
};
Once, I press the button, a toast pops up, which states:
And, unfortunately, I have no idea what to do next, can you help me?
Thank you for your time.
Edit1: Found this in log:
E NotificationService: No Channel found for
pkg=com.companyname.notifications_app, channelId=my_channel_01, id=234,
tag=null, opPkg=com.companyname.notifications_app, callingUid=10069,
userId=0, incomingUserId=0, notificationUid=10069,
notification=Notification(channel=my_channel_01 pri=0 contentView=null
vibrate=null sound=null defaults=0x0 flags=0x10 color=0x00000000 vis=PRIVATE)
Edit2: Once I press the button, the following error shows up:
TVNotifService: skipped notification
StatusBarNotification(pkg=com.companyname.notifications_app
user=UserHandle{0} id=234 tag=null
key=0|com.companyname.notifications_app|234|null|10069:
Notification(channel=my_channel_01 pri=0 contentView=null vibrate=null
sound=null defaults=0x0 flags=0x10 color=0x00000000 vis=PRIVATE)) userId: 0
Edit3: In the end, the code is working on mobile phones, and for it to be working on Android TVs, the app should be whitelisted on the system.