Build1=Default,flp2.chv.com File1=gps_hist.db File2=Layout.bal FileGroup1=Default Group FileGroup2=Default Group Group=Default Group Library1=administrator Library10=mlwifi400 Library11=okhttputils2 Library12=phone Library13=randomaccessfile Library14=reflection Library15=replyauto Library16=runtimepermissions Library17=sql Library18=javaobject Library2=byteconverter Library3=compressstrings Library4=core Library5=firebaseanalytics Library6=firebasenotifications Library7=fusedlocationprovider Library8=gps Library9=json 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~~\n~)~\n~SetApplicationAttribute(android:icon, "@drawable/icon")~\n~SetApplicationAttribute(android:label, "$LABEL$")~\n~CreateResourceFromFile(Macro, Themes.LightTheme)~\n~'End of default text.~\n~AddPermission(android.permission.ACCESS_FINE_LOCATION)~\n~AddPermission(android.permission.WRITE_EXTERNAL_STORAGE)~\n~CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~CreateResourceFromFile(Macro, FirebaseAnalytics.Firebase)~\n~CreateResourceFromFile(Macro, FirebaseAnalytics.FirebaseAnalytics)~\n~CreateResourceFromFile(Macro, FirebaseNotifications.FirebaseNotifications)~\n~SetServiceAttribute(Tracker, android:foregroundServiceType, "location")~\n~SetApplicationAttribute(android:usesCleartextTraffic, "true")~\n~AddApplicationText(~\n~ ~\n~ ~\n~ ~\n~ ~\n~)~\n~~\n~CreateResource(xml, device_admin.xml,~\n~~\n~ ~\n~ ~\n~ ~\n~ ~\n~ ~\n~~\n~)~\n~AddPermission(android.permission.SEND_SMS)~\n~AddPermission(android.permission.RECEIVE_SMS)~\n~AddPermission(android.permission.READ_PHONE_STATE)~\n~AddPermission(android.permission.READ_CALL_LOG)~\n~AddApplicationText(~\n~~\n~ ~\n~ )~\n~ ~\n~AddPermission(android.permission.RECEIVE_BOOT_COMPLETED)~\n~AddReceiverText(R_Test, ~\n~~\n~) Module1=DBRequestManager Module2=errorManager Module3=FirebaseMessaging Module4=Mods Module5=NotificationService Module6=R_Test Module7=Starter Module8=Subs Module9=Tracker NumberOfFiles=2 NumberOfLibraries=18 NumberOfModules=9 Version=12.8 @EndOfDesignText@ #Region Project Attributes #ApplicationLabel: FLP 2.0 #VersionCode: 1 #VersionName: 4.04.23 'SupportedOrientations possible values: unspecified, landscape or portrait. #SupportedOrientations: unspecified #CanInstallToExternalStorage: False ' #AdditionalJar: com.android.support:support-v4 #AdditionalJar: com.google.android.gms:play-services-location #BridgeLogger:True '########################################################################################################### '###################### PULL ############################################################# 'Ctrl + click ide://run?file=%WINDIR%\System32\cmd.exe&Args=/c&Args=git&Args=pull '########################################################################################################### '###################### PUSH ############################################################# 'Ctrl + click ide://run?file=%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe&Args=github&Args=..\..\ '########################################################################################################### '###################### PUSH TORTOISE GIT ######################################################### 'Ctrl + click ide://run?file=%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe&Args=TortoiseGitProc&Args=/command:commit&Args=/path:"./../"&Args=/closeonend:2 '########################################################################################################### #End Region #Region Activity Attributes #FullScreen: False #IncludeTitle: True #End Region Sub Process_Globals 'These global variables will be declared once when the application starts. 'These variables can be accessed from all modules. Dim wifi As MLwifi Dim wifiS As MLScan Public manager As AdminManager ' Dim ruta As String Dim fechaRuta As String Dim laUbicacion As Location End Sub Sub Globals 'These global variables will be redeclared each time the activity is created. Private b_pong As Button Private et_id As EditText Private b_guardarId As Button Private l_coords As Label Dim l_lastUpdate As Label Private l_id As Label ' Private b_flpConnect As Button Private b_exit As Button Private l_version As Label End Sub Sub Activity_Create(FirstTime As Boolean) Activity.LoadLayout("Layout") l_version.Text = Application.VersionName ' ruta = File.DirInternal Subs.getPhnId et_id.Text = Starter.devModel.trim getSSID b_pong.Left = Round(Activity.Width/2)-(b_pong.Width/2) ' b_flpConnect.Left = Round(Activity.Width/2)-(b_flpConnect.Width/2) b_exit.Left = Round(Activity.Width/2)-(b_exit.Width/2) l_id.Left = (Activity.Width / 2) - (l_id.Width / 2) l_lastUpdate.Left = (Activity.Width / 2) - (l_lastUpdate.Width / 2) b_guardarId.Left = (Activity.Width / 2) - (b_guardarId.Width / 2) et_id.Left = (Activity.Width / 2) - (et_id.Width / 2) End Sub Sub Activity_Resume chkPermisosUbicacion 'Permisos de ubicacion para Tracker chkPermisosAlmacenamientoExterno chkPermisosLeerLlamadas 'Permisos de telefono para registrar llamadas chkPermisosEstadoTelefono Subs.getPhnId et_id.Text = Starter.devModel.Trim getSSID getAdminRights l_lastUpdate.Text = Subs.fechaKMT(Starter.lastLocUpdate) ' ruta = File.DirInternal If Not(CheckNotificationAccess) Then Msgbox2Async($"Se necesita acceso a las notificaciones, haga clic en "Aceptar" y en la siguiente pantalla permita el acceso a la aplicación "${Application.LabelName}"."$, "Permisos necesarios", "Aceptar", "Cancelar", "", Null, True) Wait For Msgbox_Result (resultado As Int) If resultado = DialogResponse.POSITIVE Then Dim In As Intent In.Initialize("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS", "") StartActivity(In) End If End If ponCoords End Sub Sub Activity_Pause (UserClosed As Boolean) End Sub Sub b_pong_Click CallSubDelayed(Tracker, "StartFLP") If laUbicacion.IsInitialized Then Subs.mandaLocAServer(laUbicacion, Starter.devModel.Trim) Dim params As Map = CreateMap("topic": FirebaseMessaging.Sprvsr,"title":"Prueba Trckr", "body":"Prueba Trckr", "d":Starter.devModel, "t":"pong") CallSubDelayed2(FirebaseMessaging, "SendMessage",params) If Starter.logger Then Log("Start wifi scan") wifiS.startscan("WiFi", True) Wait For WiFi_ScanDone (Results() As String, Count As Int) End Sub Sub b_pong_LongClick ' copiaDB CallSubDelayed(Tracker, "StartFLP") If laUbicacion.IsInitialized Then Subs.mandaLocAServer(laUbicacion, Starter.devModel.Trim) Dim params As Map = CreateMap("topic": FirebaseMessaging.Sprvsr,"title":"Prueba Trckr", "body":l_coords.Text, "d":Starter.devModel, "t":"au") CallSubDelayed2(FirebaseMessaging, "SendMessage",params) If Starter.logger Then Log("Start wifi scan") wifiS.startscan("WiFi", True) Wait For WiFi_ScanDone (Results() As String, Count As Int) End Sub 'Obtenemos permisos de almacenamiento. Sub chkPermisosAlmacenamientoExterno Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_WRITE_EXTERNAL_STORAGE) Wait For Activity_PermissionResult (Permission As String, Result As Boolean) If Result Then ' If Starter.logger Then Log("Permisos de almacenamiento externo OK") Else ' ToastMessageShow("SIN permisos de almacenamiento externo", True) End If End Sub 'Obtenemos permisos de ubicacion. Sub chkPermisosUbicacion ' If Starter.logger Then Log("Revisamos permisos de ubicación.") Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_ACCESS_FINE_LOCATION) Wait For Activity_PermissionResult (Permission As String, Result As Boolean) If Result Then StartService(Tracker) If Starter.logger Then Log("Start Tracker") Else ' ToastMessageShow("SIN permisos de ubicacion", True) End If End Sub 'Obtenemos permisos de llamadas. Sub chkPermisosLeerLlamadas Starter.rp.CheckAndRequest("android.permission.READ_CALL_LOG") wait for Activity_PermissionResult(permission As String, result As Boolean) Log("READ_CALL_LOG: " & result) End Sub 'Obtenemos permisos de estado de telefono. Sub chkPermisosEstadoTelefono Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_READ_PHONE_STATE) wait for Activity_PermissionResult(permission As String, result As Boolean) if starter.logger then Log("READ_PHONE_STATE: " & result) End Sub Sub getSSID If wifi.isWifiConnected Then Subs.ssid = wifi.WifiSSID End If End Sub Sub getAdminRights If manager.Enabled = False Then manager.Enable("Please enable in order to get access to the secured server.") End If End Sub 'Sub wifiScanned_ScanDone ' Log("//////////////////////////////wifi_conected_result") ' ToastMessageShow("Wifi_ConnectionResult",True) ' If wifi.isWifiConnected Then ' ssid = wifi.WifiSSID ' End If 'End Sub Sub copiaDB 'ignore ' Log("ruta="&ruta) ' Log("File.DirInternal="&File.DirInternal) ' Log("File.DirRootExternal="&File.DirRootExternal) ' Log("File.DirDefaultExternal="&File.DirDefaultExternal) ' Log(Starter.rp.GetSafeDirDefaultExternal("")) ' Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_WRITE_EXTERNAL_STORAGE) ' Wait For Activity_PermissionResult (Permission As String, Result As Boolean) ' If Result Then ' If Starter.logger Then Log("Tenemos permisos de escritura.") ' File.Copy(File.DirInternal , "gps_hist.db", File.DirDefaultExternal, "gps_hist.db") ' If Starter.logger Then Log($"DB escrita a ${File.DirDefaultExternal}"$) ' ToastMessageShow($"DB escrita a ${File.DirDefaultExternal}"$, True) ' End If End Sub Private Sub b_guardarId_Click If et_id.Text.Length > 2 Then 'Si tenemos valor para ID File.WriteString(File.DirInternal, "phnId.txt", et_id.Text.trim) 'Sobreescribimos archivo IdPersonal.txt con ID Starter.devModel = et_id.Text.Trim If Starter.logger Then Log("Tenemos ID: "& et_id.Text.Trim & " "&File.DirInternal&"/phnId.txt sobreescrito") Else If et_id.Text.Length < 3 Then ' Si no tenemos valor, lo leemos de IdPersonal.txt Dim s As String = File.ReadString(File.DirInternal, "phnId.txt") Starter.devModel = s If Starter.logger Then Log("Leemos id de "&File.DirInternal&"/phnId.txt") et_id.Text = Starter.devModel.Trim If Starter.logger Then Log(Starter.devModel.Trim) End If If laUbicacion.IsInitialized Then Subs.mandaLocAServer(laUbicacion, Starter.devModel.Trim) End Sub Sub ponCoords l_coords.left = (Activity.Width/2) - (l_coords.Width/2) l_coords.Text = $"${Starter.UUC.Latitude},${Starter.UUC.Longitude}"$ End Sub 'Revisa si la aplicación tiene permiso para acceder a las notificaciones. Sub CheckNotificationAccess As Boolean Dim ph As Phone Dim nstr, pstr As String Dim r As Reflector pstr = r.GetStaticField("anywheresoftware.b4a.BA", "packageName") nstr = ph.GetSettings("enabled_notification_listeners") Return nstr.Contains(pstr) End Sub Sub actualizaLabelUU l_lastUpdate.Text = Subs.fechaKMT(Starter.lastLocUpdate) End Sub 'Private Sub b_flpConnect_Click ' Log("Conectamos a FLP") ' CallSubDelayed(Tracker, "flpReConnect") 'End Sub Private Sub b_exit_Click ' CallSubDelayed(Tracker, "flpReConnect") Starter.restartTracker End Sub Sub b_exit_LongClick ExitApplication End Sub