Sub NB6Notification(Id As Int,xTitle As Object,xTexte As Object,Number As Object,xTag As String,Pkg As String,xActivity As Object)
Dim ctxt, NBuilder As JavaObject, pm As PackageManager
ctxt.InitializeContext
Dim NManager As JavaObject = ctxt.RunMethod("getSystemService", Array("notification"))
Dim ChannelId As String = Application.LabelName&"_DEFAULT"
Dim Channel As JavaObject = NManager.RunMethod("getNotificationChannel",Array(ChannelId))
If Not(Channel.IsInitialized) Then
Log("Creation du channel " & ChannelId & "...")
Channel.InitializeNewInstance("android.app.NotificationChannel", Array(ChannelId,Application.LabelName , 3))
Channel.RunMethod("enableLights",Array(True))
Channel.RunMethod("enableVibration",Array(True))
Channel.RunMethod("setShowBadge",Array(True))
NManager.RunMethod("createNotificationChannel",Array(Channel))
End If
NBuilder.InitializeNewInstance("android.app.Notification$Builder", Array(ctxt, ChannelId))
NBuilder.RunMethodJO("setContentTitle", Array(xTitle)).RunMethodJO("setContentText", Array(xTexte))
NBuilder.RunMethodJO("setAutoCancel", Array(Id>0)).RunMethodJO("setOngoing", Array(Id<0))
NBuilder.RunMethodJO("setColorized", Array(True)).RunMethodJO("setColor", Array(Colors.White))
NBuilder.RunMethodJO("setShowWhen", Array(True)).RunMethodJO("setWhen", Array(DateTime.Now))
NBuilder.RunMethod("setSmallIcon", Array(Icon2Bitmap(Application.Icon)))
If IsNumber(Number) Then NBuilder.RunMethod("setNumber", Array(Number))
If Pkg<>"" Then NBuilder.RunMethod("setLargeIcon", Array(Tools.cd2b(pm.GetApplicationIcon(Pkg),40)))
Dim in As Intent
in.Initialize("","")
in.Flags = Bit.Or(268435456, 131072)
If GetType(xActivity)="java.lang.Class" Then
in.SetComponent(Application.PackageName&"/"&xActivity.As(String).SubString(6))
Else
Dim comp As JavaObject = xActivity.As(JavaObject).RunMethod("getComponent",Null)
If comp.IsInitialized Then in.SetComponent(comp.RunMethod("getPackageName",Null)&"/"&comp.RunMethod("getClassName",Null))
End If
Select True
Case Regex.IsMatch("\w+=.*",xTag)
Dim v() As String = Regex.Split("=|;",xTag)
For i=0 To v.Length-1 Step 2
in.PutExtra(v(i),v(i+1))
Next
Case xTag<>""
in.PutExtra("Notification_tag",xTag)
End Select
Dim PendingIntent As JavaObject : PendingIntent.InitializeStatic("android.app.PendingIntent")
Dim ContentIntent As Object = PendingIntent.RunMethod("getActivity", Array(ctxt, Rnd(0, 0x7fffffff), in, Bit.Or(0, 33554432)))
NBuilder.RunMethod("setContentIntent", Array(ContentIntent))
Dim msg As JavaObject
msg.InitializeNewInstance("android.app.Notification",Null)
msg = NBuilder.RunMethod("build", Null)
Id = Abs(Id)
NManager.RunMethod("notify",Array(Id,msg))
End Sub
Private Sub Icon2Bitmap(bmp As Bitmap) As Object
Dim jo As JavaObject
Return jo.InitializeStatic("android.graphics.drawable.Icon").RunMethod("createWithBitmap", Array(bmp))
End Sub