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=notificationlistener Library12=okhttputils2 Library13=phone Library14=randomaccessfile Library15=reflection Library16=runtimepermissions Library17=sql Library18=replyauto 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~~\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~ ) Module1=DBRequestManager Module2=FirebaseMessaging Module3=Mods Module4=NotificationService Module5=Starter Module6=Subs Module7=Tracker NumberOfFiles=2 NumberOfLibraries=18 NumberOfModules=7 Version=12.5 @EndOfDesignText@ #Region Project Attributes #ApplicationLabel: FLP 2.0 #VersionCode: 1 #VersionName: 3.07.07 '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 #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 Button1 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 End Sub Sub Activity_Create(FirstTime As Boolean) Activity.LoadLayout("Layout") ' ruta = File.DirInternal Subs.getPhnId et_id.Text = Starter.devModel.trim getSSID Button1.Left = Round(Activity.Width/2)-(Button1.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 Subs.getPhnId et_id.Text = Starter.devModel.Trim getSSID getAdminRights l_lastUpdate.Text = 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 End Sub Sub Activity_Pause (UserClosed As Boolean) End Sub Sub Button1_Click 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 Button1_LongClick copiaDB End Sub 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 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 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 ' 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(Starter.ruta , "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 Tracker.FLP.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