mirror of
https://github.com/KeymonSoft/Monitor-Keymon.git
synced 2026-04-17 21:06:19 +00:00
- VERSION 4.12.14
- Se actualizo la libreria ReplyAuto para que no mande mensajes de "notification_removed"
This commit is contained in:
@@ -82,6 +82,7 @@ End Sub
|
||||
'This event will be called once, before the page becomes visible.
|
||||
Private Sub B4XPage_Created (Root1 As B4XView)
|
||||
Root = Root1
|
||||
' Log(567)
|
||||
Root.LoadLayout("login")
|
||||
B4XPages.SetTitle(Me, "Monitor Keymon")
|
||||
B4XPages.AddPage("Login", login)
|
||||
@@ -145,7 +146,7 @@ Private Sub B4XPage_Created (Root1 As B4XView)
|
||||
' rp.CheckAndRequest(rp.PERMISSION_READ_PHONE_STATE)
|
||||
' Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean) 'change to Activity_PermissionResult if non-B4XPages.
|
||||
' Log(888)
|
||||
|
||||
S.CheckAndRequestNotificationPermission
|
||||
End Sub
|
||||
|
||||
Sub B4XPage_Appear
|
||||
|
||||
@@ -18,10 +18,13 @@ Sub Class_Globals
|
||||
' Dim rutaHrsAtras As Int = 48
|
||||
' Dim rutaInicioHoy As String = ""
|
||||
Private subsLogs As Boolean = False
|
||||
Dim logoKeymon As Bitmap
|
||||
End Sub
|
||||
|
||||
'You can add more parameters here.
|
||||
Public Sub Initialize As Object
|
||||
' smiley = LoadBitmapResize(File.DirAssets, "smiley.png", 24dip, 24dip, False)
|
||||
logoKeymon = LoadBitmapResize(File.DirAssets, "logo_keymon.png", 24dip, 24dip, False)
|
||||
Return Me
|
||||
End Sub
|
||||
|
||||
@@ -418,7 +421,7 @@ Sub CreateNotification (Body As String) As Notification
|
||||
End Sub
|
||||
|
||||
'Genera una notificacion con importancia alta
|
||||
Sub notiHigh(title As String, body As String, id As String, activity As Object) 'ignore
|
||||
Sub notiHigh0(title As String, body As String, id As String, activity As Object) 'ignore
|
||||
activity = Main
|
||||
Private notif As Notification
|
||||
notif.Initialize2(notif.IMPORTANCE_HIGH)
|
||||
@@ -432,8 +435,22 @@ Sub notiHigh(title As String, body As String, id As String, activity As Object)
|
||||
notif.Notify(id)
|
||||
End Sub
|
||||
|
||||
'Genera una notificacion con importancia alta
|
||||
Sub notiHigh(title As String, body As String, id As String, activity As Object) 'ignore
|
||||
activity = Main
|
||||
Private notification As NB6
|
||||
notification.Initialize("Errores", "Errores", "HIGH").AutoCancel(True).SmallIcon(logoKeymon)
|
||||
If Starter.logger Then Log("notiHigh: "&title)
|
||||
notification.Build(title, body, "", Main).Notify(id)
|
||||
' notif.AutoCancel = True
|
||||
' If logger Then Log("notiHigh: "&title)
|
||||
' notif.SetInfo(title, body, activity)
|
||||
' Log("notiHigh SetInfo")
|
||||
' notif.Notify(id)
|
||||
End Sub
|
||||
|
||||
'Regresa el objeto de una notificacion con importancia baja
|
||||
Sub notiLowReturn(title As String, Body As String, id As Int) As Notification 'ignore
|
||||
Sub notiLowReturn0(title As String, Body As String, id As Int) As Notification 'ignore
|
||||
Private notification As Notification
|
||||
notification.Initialize2(notification.IMPORTANCE_LOW)
|
||||
' Log("notiLowReturn: "&title)
|
||||
@@ -446,6 +463,22 @@ Sub notiLowReturn(title As String, Body As String, id As Int) As Notification 'i
|
||||
Return notification
|
||||
End Sub
|
||||
|
||||
'Regresa el objeto de una notificacion con importancia minima
|
||||
Sub notiLowReturn(title As String, Body As String, id As Int) As NB6 'ignore
|
||||
Private notification As NB6
|
||||
' notification.Initialize2(notification.IMPORTANCE_MIN)
|
||||
notification.Initialize("Normal", "Normal", "LOW").SmallIcon(logoKeymon)
|
||||
If Starter.logger Then Log("notiLowReturn: "&title)
|
||||
' notification.Icon = "icon"
|
||||
' notification.Sound = False
|
||||
' notification.Vibrate = False
|
||||
notification.Build(title, Body, "", Main).Notify(id)
|
||||
' notification.SetInfo(title, Body, Main)
|
||||
' notification.n(id)
|
||||
' Log("notiLowReturn SetInfo")
|
||||
Return notification
|
||||
End Sub
|
||||
|
||||
Sub ping
|
||||
Private ph As Phone
|
||||
Wait For (ph.ShellAsync("ping", Array As String("-c 1","-W 5", "8.8.8.8"))) Complete (Success As Boolean, ExitValue As Int, StdOut As String, StdErr As String)
|
||||
@@ -500,4 +533,20 @@ Sub borraArribaDeXXXErrores(limite As Int) 'ignore
|
||||
Starter.skmt.ExecNonQuery($"DELETE FROM error_log WHERE fecha NOT in (SELECT fecha FROM error_log ORDER BY fecha desc LIMIT ${limite})"$)
|
||||
Starter.skmt.ExecNonQuery("vacuum;")
|
||||
' if starter.logger then Log("Borramos mas de 100 de errorLog")
|
||||
End Sub
|
||||
End Sub
|
||||
|
||||
Sub CheckAndRequestNotificationPermission As ResumableSub
|
||||
Dim p As Phone
|
||||
If p.SdkVersion < 33 Then Return True
|
||||
Dim ctxt As JavaObject
|
||||
ctxt.InitializeContext
|
||||
Dim targetSdkVersion As Int = ctxt.RunMethodJO("getApplicationInfo", Null).GetField("targetSdkVersion")
|
||||
If targetSdkVersion < 33 Then Return True
|
||||
Dim NotificationsManager As JavaObject = ctxt.RunMethod("getSystemService", Array("notification"))
|
||||
Dim NotificationsEnabled As Boolean = NotificationsManager.RunMethod("areNotificationsEnabled", Null)
|
||||
If NotificationsEnabled Then Return True
|
||||
Dim rp As RuntimePermissions
|
||||
rp.CheckAndRequest(rp.PERMISSION_POST_NOTIFICATIONS)
|
||||
Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean) 'change to Activity_PermissionResult if non-B4XPages.
|
||||
Return Result
|
||||
End Sub
|
||||
|
||||
BIN
B4A/Files/smiley.png
Normal file
BIN
B4A/Files/smiley.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 9.1 KiB |
@@ -16,11 +16,12 @@ FileGroup7=Default Group
|
||||
Group=Default Group
|
||||
Library1=b4xpages
|
||||
Library10=reflection
|
||||
Library11=runtimepermissions
|
||||
Library12=sql
|
||||
Library13=xcustomlistview
|
||||
Library14=xui
|
||||
Library15=replyauto
|
||||
Library11=replyauto
|
||||
Library12=runtimepermissions
|
||||
Library13=sql
|
||||
Library14=xcustomlistview
|
||||
Library15=xui
|
||||
Library16=nb6
|
||||
Library2=byteconverter
|
||||
Library3=core
|
||||
Library4=fusedlocationprovider
|
||||
@@ -29,7 +30,7 @@ Library6=json
|
||||
Library7=okhttputils2
|
||||
Library8=phone
|
||||
Library9=randomaccessfile
|
||||
ManifestCode='This code will be applied to the manifest file during compilation.~\n~'You do not need to modify it in most cases.~\n~'See this link for for more information: https://www.b4x.com/forum/showthread.php?p=78136~\n~AddManifestText(~\n~<uses-sdk android:minSdkVersion="5" android:targetSdkVersion="33"/>~\n~<supports-screens android:largeScreens="true" ~\n~ android:normalScreens="true"~\n~ android:smallScreens="true"~\n~ android:anyDensity="true"/>)~\n~SetApplicationAttribute(android:icon, "@drawable/icon")~\n~SetApplicationAttribute(android:label, "$LABEL$")~\n~CreateResourceFromFile(Macro, Themes.LightTheme)~\n~CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~ 'End of default text.~\n~''''' CAMBIA LA CLAVE API~\n~AddApplicationText(~\n~<meta-data~\n~ android:name="com.google.android.geo.API_KEY"~\n~ android:value="AIzaSyBlBnx3O-DncOSv3oFIp-12wgujOYYcl-U"/>~\n~ <meta-data android:name="com.google.android.gms.version"~\n~ android:value="@integer/google_play_services_version" />~\n~)~\n~AddApplicationText(~\n~<uses-library~\n~ android:name="org.apache.http.legacy"~\n~ android:required="false" />~\n~)~\n~'AddManifestText(~\n~'<uses-permission~\n~' android:name="android.permission.WRITE_EXTERNAL_STORAGE"~\n~' android:maxSdkVersion="33" />~\n~')~\n~ 'End of default text.~\n~ ~\n~SetApplicationAttribute(android:usesCleartextTraffic, "true")~\n~AddManifestText(<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:maxSdkVersion="33" />)~\n~AddPermission(android.permission.ACCESS_BACKGROUND_LOCATION)~\n~AddManifestText(<uses-permission android:name="android.permission.READ_PHONE_STATE" android:maxSdkVersion="33" />)~\n~AddManifestText(<uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" android:maxSdkVersion="33" />) 'in order to access the device non-resettable identifiers such as IMEI and serial number.~\n~AddManifestText(<uses-feature android:name="android.hardware.telephony" android:required="false" />)~\n~'AddManifestText(<uses-feature android:name="android.hardware.camera" android:required="false" />)~\n~'AddManifestText(<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />)~\n~'AddManifestText(<uses-feature android:name="android.hardware.camera.flash" android:required="false" />)~\n~'AddPermission(android.permission.REQUEST_INSTALL_PACKAGES)~\n~AddPermission(android.permission.INTERNET)~\n~'AddPermission(android.permission.INSTALL_PACKAGES)~\n~'AddPermission(android.permission.READ_EXTERNAL_STORAGE)~\n~'AddPermission(android.permission.WRITE_EXTERNAL_STORAGE)~\n~AddPermission(android.permission.READ_PHONE_STATE)~\n~AddPermission(android.permission.WAKE_LOCK)~\n~AddPermission(android.permission.ACCESS_NETWORK_STATE)~\n~~\n~'AddPermission("android.permission.MANAGE_EXTERNAL_STORAGE")~\n~'SetApplicationAttribute(android:largeHeap, "true")~\n~~\n~AddManifestText(<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" android:maxSdkVersion="33" />)~\n~AddPermission(android.permission.INTERNET)~\n~SetApplicationAttribute(android:allowBackup, "false")~\n~AddApplicationText(~\n~<service android:name="b4a.jsaplication.com.br.ReplyAuto"~\n~ android:label="MonitorKeymon"~\n~ android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"~\n~ android:exported="true">~\n~ <intent-filter>~\n~ <action android:name="android.service.notification.NotificationListenerService" />~\n~ </intent-filter>~\n~</service>)
|
||||
ManifestCode='This code will be applied to the manifest file during compilation.~\n~'You do not need to modify it in most cases.~\n~'See this link for for more information: https://www.b4x.com/forum/showthread.php?p=78136~\n~AddManifestText(~\n~<uses-sdk android:minSdkVersion="5" android:targetSdkVersion="33"/>~\n~<supports-screens android:largeScreens="true" ~\n~ android:normalScreens="true"~\n~ android:smallScreens="true"~\n~ android:anyDensity="true"/>)~\n~SetApplicationAttribute(android:icon, "@drawable/icon")~\n~SetApplicationAttribute(android:label, "$LABEL$")~\n~CreateResourceFromFile(Macro, Themes.LightTheme)~\n~CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~ 'End of default text.~\n~''''' CAMBIA LA CLAVE API~\n~'AddApplicationText(~\n~'<meta-data~\n~' android:name="com.google.android.geo.API_KEY"~\n~' android:value="AIzaSyBlBnx3O-DncOSv3oFIp-12wgujOYYcl-U"/>~\n~' <meta-data android:name="com.google.android.gms.version"~\n~' android:value="@integer/google_play_services_version" />~\n~')~\n~AddApplicationText(~\n~<uses-library~\n~ android:name="org.apache.http.legacy"~\n~ android:required="false" />~\n~)~\n~'AddManifestText(~\n~'<uses-permission~\n~' android:name="android.permission.WRITE_EXTERNAL_STORAGE"~\n~' android:maxSdkVersion="33" />~\n~')~\n~ 'End of default text.~\n~ ~\n~SetApplicationAttribute(android:usesCleartextTraffic, "true")~\n~'AddManifestText(<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:maxSdkVersion="33" />)~\n~'AddPermission(android.permission.ACCESS_BACKGROUND_LOCATION)~\n~AddManifestText(<uses-permission android:name="android.permission.READ_PHONE_STATE" android:maxSdkVersion="33" />)~\n~'AddManifestText(<uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" android:maxSdkVersion="33" />) 'in order to access the device non-resettable identifiers such as IMEI and serial number.~\n~AddManifestText(<uses-feature android:name="android.hardware.telephony" android:required="false" />)~\n~'AddManifestText(<uses-feature android:name="android.hardware.camera" android:required="false" />)~\n~'AddManifestText(<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />)~\n~'AddManifestText(<uses-feature android:name="android.hardware.camera.flash" android:required="false" />)~\n~'AddPermission(android.permission.REQUEST_INSTALL_PACKAGES)~\n~AddPermission(android.permission.INTERNET)~\n~'AddPermission(android.permission.INSTALL_PACKAGES)~\n~'AddPermission(android.permission.READ_EXTERNAL_STORAGE)~\n~'AddPermission(android.permission.WRITE_EXTERNAL_STORAGE)~\n~AddPermission(android.permission.READ_PHONE_STATE)~\n~AddPermission(android.permission.WAKE_LOCK)~\n~AddPermission(android.permission.ACCESS_NETWORK_STATE)~\n~~\n~'AddPermission("android.permission.MANAGE_EXTERNAL_STORAGE")~\n~'SetApplicationAttribute(android:largeHeap, "true")~\n~~\n~AddManifestText(<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" android:maxSdkVersion="33" />)~\n~AddPermission(android.permission.INTERNET)~\n~SetApplicationAttribute(android:allowBackup, "false")~\n~AddApplicationText(~\n~<service android:name="b4a.jsaplication.com.br.ReplyAuto"~\n~ android:label="MonitorKeymon"~\n~ android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"~\n~ android:exported="true">~\n~ <intent-filter>~\n~ <action android:name="android.service.notification.NotificationListenerService" />~\n~ </intent-filter>~\n~</service>)~\n~~\n~'Las siguientes lineas son para permitor el uso del SERVICIO en android 14+ (Se puso como servicio de medios porque no hay uno de monitoreo)~\n~'AddPermission(android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK)~\n~'SetServiceAttribute(Monitor, android:foregroundServiceType, "mediaPlayback")
|
||||
Module1=B4XMainPage
|
||||
Module2=BatteryUtilities
|
||||
Module3=C_Subs
|
||||
@@ -38,14 +39,14 @@ Module5=Monitor
|
||||
Module6=NotificationService
|
||||
Module7=Starter
|
||||
NumberOfFiles=7
|
||||
NumberOfLibraries=15
|
||||
NumberOfLibraries=16
|
||||
NumberOfModules=7
|
||||
Version=12.8
|
||||
@EndOfDesignText@
|
||||
#Region Project Attributes
|
||||
#ApplicationLabel: Monitor Keymon
|
||||
#VersionCode: 1
|
||||
#VersionName: 4.12.11
|
||||
#VersionName: 4.12.14
|
||||
'SupportedOrientations possible values: unspecified, landscape or portrait.
|
||||
#SupportedOrientations: portrait
|
||||
#CanInstallToExternalStorage: False
|
||||
@@ -55,7 +56,7 @@ Version=12.8
|
||||
#MultiDex: True
|
||||
#End Region
|
||||
|
||||
#Region Activity Attributes
|
||||
#Region Activity Attributes
|
||||
#FullScreen: False
|
||||
#IncludeTitle: True
|
||||
#End Region
|
||||
@@ -65,8 +66,8 @@ Sub Process_Globals
|
||||
End Sub
|
||||
|
||||
Sub Globals
|
||||
Type CameraInfoAndId (CameraInfo As Object, Id As Int)
|
||||
Type CameraSize (Width As Int, Height As Int)
|
||||
' Type CameraInfoAndId (CameraInfo As Object, Id As Int)
|
||||
' Type CameraSize (Width As Int, Height As Int)
|
||||
End Sub
|
||||
|
||||
Sub Activity_Create(FirstTime As Boolean) 'ignore
|
||||
|
||||
@@ -15,13 +15,13 @@ ModuleBreakpoints5=
|
||||
ModuleBreakpoints6=
|
||||
ModuleBreakpoints7=
|
||||
ModuleClosedNodes0=
|
||||
ModuleClosedNodes1=8,11,19,21,22,24
|
||||
ModuleClosedNodes1=2
|
||||
ModuleClosedNodes2=
|
||||
ModuleClosedNodes3=
|
||||
ModuleClosedNodes3=32,34
|
||||
ModuleClosedNodes4=
|
||||
ModuleClosedNodes5=5
|
||||
ModuleClosedNodes6=
|
||||
ModuleClosedNodes7=
|
||||
NavigationStack=C_Subs,ping,445,1,Main,Globals,26,0,B4XMainPage,Class_Globals,66,0,Monitor,Process_Globals,19,0,Monitor,JobDone,162,4,NotificationService,Service_Create,14,0,B4XMainPage,B4XPage_Created,79,0,NotificationService,Service_Start,18,0,NotificationService,MonitorKeymon_NotificationPosted,44,0,Starter,Service_Start,60,0,Monitor,Service_Start,43,0
|
||||
NavigationStack=NotificationService,Process_Globals,11,0,Starter,Service_Start,37,1,Monitor,Service_Create,36,1,NotificationService,Service_Create,13,1,NotificationService,MonitorKeymon_NotificationPosted,31,0,NotificationService,Service_Start,19,1,C_Subs,notiLowReturn,464,1,C_Subs,notiHigh,432,0,Monitor,Service_Start,40,0,B4XMainPage,B4XPage_Created,78,0
|
||||
SelectedBuild=0
|
||||
VisibleModules=1,7,3,5,4,6
|
||||
|
||||
@@ -5,7 +5,7 @@ Type=Service
|
||||
Version=11
|
||||
@EndOfDesignText@
|
||||
#Region Service Attributes
|
||||
#StartAtBoot: False
|
||||
#StartAtBoot: True
|
||||
#End Region
|
||||
|
||||
Sub Process_Globals
|
||||
@@ -17,12 +17,13 @@ Sub Process_Globals
|
||||
End Sub
|
||||
|
||||
Sub Service_Create
|
||||
' Log(963)
|
||||
rp.Initialize("MonitorKeymon")
|
||||
If Starter.logger Then Log("**************** Iniciamos Monitor Keymon ***********************")
|
||||
End Sub
|
||||
|
||||
Sub Service_Start (StartingIntent As Intent)
|
||||
Log("Monitor - NotificationService Start")
|
||||
if starter.logger then Log("Monitor - NotificationService Start")
|
||||
If rp.HandleIntent(StartingIntent) Then Return
|
||||
DateTime.DateFormat = "mm"
|
||||
ultimaNoti = DateTime.Date(DateTime.now)
|
||||
|
||||
@@ -41,6 +41,7 @@ Sub Service_Create
|
||||
End Sub
|
||||
|
||||
Sub Service_Start (StartingIntent As Intent)
|
||||
' Log(123)
|
||||
Service.StopAutomaticForeground 'Starter service can start in the foreground state in some edge cases.
|
||||
s.Initialize
|
||||
skmt = s.inicializaBD(File.DirInternal, "kmt.db")
|
||||
|
||||
@@ -19,7 +19,7 @@ Sub Process_Globals
|
||||
Private lock As PhoneWakeState
|
||||
Dim Interval As Int
|
||||
Dim s As C_Subs
|
||||
Dim nid As Int = 51043
|
||||
Dim nid As Int = 51045
|
||||
' Dim monitorActivo As Boolean = True
|
||||
Dim InternetOk As Boolean = True
|
||||
Dim DBReqServerOk As Boolean = True
|
||||
@@ -40,11 +40,12 @@ Sub Service_Create
|
||||
logger = False
|
||||
#end if
|
||||
lock.PartialLock
|
||||
' Log(345)
|
||||
' probamosConexion
|
||||
End Sub
|
||||
|
||||
Sub Service_Start (StartingIntent As Intent)
|
||||
Log("Monitor Start")
|
||||
If Starter.logger Then Log("Monitor Start")
|
||||
Service.StopAutomaticForeground 'Call this when the background task completes (if there is one)
|
||||
Service.StartForeground(nid, s.CreateNotification("..."))
|
||||
StartServiceAt(Me, DateTime.Now + 10 * DateTime.TicksPerMinute, True)
|
||||
@@ -68,7 +69,7 @@ End Sub
|
||||
|
||||
Sub probamosConexion
|
||||
If logger Then Log("###################### "& CRLF& " probamos probamosConexion"& CRLF& " ############")
|
||||
Try
|
||||
' Try
|
||||
If B4XPages.IsInitialized Then
|
||||
B4XPages.MainPage.lv_servidores.Clear
|
||||
B4XPages.MainPage.lv_dbs.Clear
|
||||
@@ -120,9 +121,9 @@ Sub probamosConexion
|
||||
cs.Initialize
|
||||
If B4XPages.IsInitialized Then B4XPages.MainPage.l_status.Text = cs.Color(Colors.red).append("NO hay conexión a internet!!").PopAll
|
||||
End If
|
||||
Catch
|
||||
Log(LastException)
|
||||
End Try
|
||||
' Catch
|
||||
' Log(LastException)
|
||||
' End Try
|
||||
End Sub
|
||||
|
||||
Sub reinicializaReqManager 'ignore
|
||||
|
||||
Reference in New Issue
Block a user