Android Question firebase messages only comes when my app is open

Makumbi

Well-Known Member
Licensed User
Please help my messages only comes when i have open the app if the app is not open then they do not come please help

B4X:
'This code will be applied to the manifest file during compilation.
'You do not need to modify it in most cases.
'See this link for for more information: https://www.b4x.com/forum/showthread.php?p=78136
AddManifestText(
<uses-sdk android:minSdkVersion="5" android:targetSdkVersion="28"/>
<supports-screens android:largeScreens="true"
    android:normalScreens="true"
    android:smallScreens="true"
    android:anyDensity="true"/>)
SetApplicationAttribute(android:usesCleartextTraffic, "true")
SetApplicationAttribute(android:allowBackup, "false")
SetApplicationAttribute(android:icon, "@drawable/icon")
SetApplicationAttribute(android:label, "$LABEL$")
    SetActivityAttribute(SendsmschatV2, android:windowSoftInputMode, adjustPan|stateHidden)
CreateResourceFromFile(Macro, Themes.DarkTheme)
CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)
CreateResourceFromFile(Macro, FirebaseAnalytics.Firebase)
CreateResourceFromFile(Macro, FirebaseNotifications.FirebaseNotifications)
CreateResourceFromFile(Macro, Core.NetworkClearText)
AddPermission(com.majeur.launcher.permission.UPDATE_BADGE)
AddPermission(com.sec.android.provider.badge.permission.READ)
AddPermission(com.sec.android.provider.badge.permission.WRITE)
AddPermission(com.htc.launcher.permission.READ_SETTINGS)
AddPermission(com.htc.launcher.permission.UPDATE_SHORTCUT)
AddPermission(com.anddoes.launcher.permission.UPDATE_COUNT)
AddPermission(com.majeur.launcher.permission.UPDATE_BADGE)
AddPermission(com.huawei.launcher3.permission.READ_SETTINGS)
AddPermission(com.huawei.launcher3.permission.WRITE_SETTINGS)
AddPermission(com.huawei.launcher2.permission.READ_SETTINGS)
AddPermission(com.huawei.launcher2.permission.READ_SETTINGS)
AddPermission(com.huawei.android.launcher.permission.WRITE_SETTINGS)
AddPermission(com.huawei.android.launcher.permission.READ_SETTINGS)
AddPermission(android.permission.READ_EXTERNAL_STORAGE)
AddPermission(android.permission.WRITE_EXTERNAL_STORAGE)
AddPermission(com.sonyericsson.home.permission.BROADCAST_BADGE)
AddPermission(com.anddoes.launcher.permission.UPDATE_COUNT)

AddApplicationText(
  <provider
  android:name="android.support.v4.content.FileProvider"
  android:authorities="$PACKAGE$.provider"
  android:exported="false"
  android:grantUriPermissions="true">
  <meta-data
  android:name="android.support.FILE_PROVIDER_PATHS"
  android:resource="@xml/provider_paths"/>
  </provider>
)
CreateResource(xml, provider_paths,
   <files-path name="name" path="shared" />
)

 

CreateResource(values, colors.xml,
<resources>
    <color name="actionbar">#0098FF</color>
    <color name="statusbar">#ff006db3</color>
    <color name="textColorPrimary">#ffffffff</color>
    <color name="navigationBar">#ff006db3</color>
</resources>
)
CreateResource(values-v20, theme.xml,
<resources>
    <style name="LightTheme" parent="@android:style/Theme.Material.Light">
         <item name="android:colorPrimary">@color/actionbar</item>
         <item name="android:colorPrimaryDark">@color/statusbar</item>
         <item name="android:textColorPrimary">@color/textColorPrimary</item>
         <item name="android:navigationBarColor">@color/navigationBar</item>
    </style>
</resources>
)

'End of default text.





'End of default text.

'



B4X:
#Region  Service Attributes
    #StartAtBoot: False
    
#End Region

Sub Process_Globals
    Private fm As FirebaseMessaging
    Dim cursor1 As Cursor

End Sub

Sub Service_Create
    fm.Initialize("fm")
End Sub

Public Sub SubscribeToTopics
    'fm.SubscribeToTopic("general") 'you can subscribe to more topics
    'fm.SubscribeToTopic("No0781703474") 'you can subscribe to more topics
    
    cursor1 = Starter.SQL1.ExecQuery("SELECT phone AS Phone,Sex FROM Register")
    If cursor1.RowCount > 0 Then
        '    For i = 0 To cursor1.RowCount - 1
        cursor1.Position =0
        Dim Phoneg As String
        Phoneg = cursor1.Getstring("Phone")
        Log(Phoneg)
        fm.SubscribeToTopic(Phoneg) 'you can subscribe to more topics
        
        'Next
    End If
End Sub

Sub Service_Start (StartingIntent As Intent)
    If StartingIntent.IsInitialized Then fm.HandleIntent(StartingIntent)
    Sleep(0)
    Service.StopAutomaticForeground 'remove if not using B4A v8+.
End Sub

Sub fm_MessageArrived (Message As RemoteMessage)
    Log("Message arrived")
    Log($"Message data: ${Message.GetData}"$)
    Starter.strTitle = Message.GetData.Get("title")
    Starter.strBody = Message.GetData.Get("body")
    Dim n As Notification
    n.Initialize
    n.Icon = "icon"
    n.SetInfo(Message.GetData.Get("title"), Message.GetData.Get("body"),SendsmschatV2)
    'n.Build("Important Good Work sula!!!", "Content", "tag", Me).Notify(9)
    n.Notify(1)
    'CallSub2(Sendsms, "SetText", Message.GetData.Get("title"))
    'If Message.GetData.ContainsKey("title") Then
        'Dim sms As String = Message.GetData.Get("title")
        'Log(sms)
    'End If
    
End Sub



Sub Service_Destroy

End Sub


B4X:
#Region  Service Attributes
    #StartAtBoot: False
    #ExcludeFromLibrary: True
    
#End Region

Sub Process_Globals
    Public SQL1 As SQL
    Dim SQL1 As SQL
    'Dim cursor1 As Cursor
    Public Provider As FileProvider
    Dim cursor As Cursor
    Private nid As Int = 1
    Private serializator As B4XSerializator
    Dim SQLDataBasePath = File.DirInternal As String
    Dim SQLDateBaseName = "studentdbmk.sql" As String
    'Dim SQLTabelName = "persons" As String
    Public CurrentIndex As Int        'index of the current entry
    Public RowNumber As Int                'number of rows
    Public rp As RuntimePermissions
    Public IDList As List        'list containing the IDs of the database
    'we need it because the IDs can be different from the list indexes
    'if we delete an entry its ID is lost
    Dim cursor As Cursor
    'Variables for Edit
    'the Edit Activity has two modes  "Add"  and "Edit"
    Public EditMode As String

    
    Type StudentDatacompare (admno As String, Names As String,First As String, Second As String, Subject As String, Firsagg As String,Secagg As String, Differencemks As String, Differenceagg As String, categorymks As String,categoryagg As String)


    'Variables for Filter
    'variable for the filter query,
    'defined in the btnFilter_Click routine
    'and will be used In the DBWebView ShowTable routine
    Public FilterQuery As String
    
    'flag for the filter active or inactive
    Public flagFilterActive As Boolean
    
    'Boolean operator used in the filter
    'can be OR or AND
    Public FilterBooleanOperator As String
    
    'Variables used to hold the selected indexes of the Spinners
    Public SelectedFirstName = 0 As Int
    Public SelectedLastName = 0 As Int
    Public SelectedCity = 0 As Int
    Dim strTitle As String
    Dim strBody As String
    
End Sub
Private Sub CreateMessage(Body As String) As Byte()
    Dim m As Message
    m.Initialize
    m.Body = Body
    m.From = "currentName"
    Return serializator.ConvertObjectToBytes(m)
End Sub
Public Sub SendMessage(Body As String)
    CreateMessage(Body)
    'client.Publish2("all", CreateMessage(Body), 0, False)

End Sub
Sub Service_Create
    'initialize the variables
    Provider.Initialize
    CurrentIndex = -1
    RowNumber = 0
    EditMode = "Add"
    FilterQuery = ""
    flagFilterActive = False
    FilterBooleanOperator = "OR "
    Service.AutomaticForegroundMode = Service.AUTOMATIC_FOREGROUND_NEVER
    'File.Delete(File.DirInternal, "studentdbm.sql") ' only for testing, removes the database
    'check if the database already exists
    Dim jo As JavaObject
    jo.InitializeStatic("java.util.Locale").RunMethod("setDefault", Array(jo.GetField("UK")))
    If File.Exists(SQLDataBasePath, SQLDateBaseName) = False Then
        'copy the default DB
        File.Copy(File.DirAssets, SQLDateBaseName, SQLDataBasePath, SQLDateBaseName)
        'if not, initialize it
        SQL1.Initialize(SQLDataBasePath, SQLDateBaseName, True)
        'and create it
        'CreateDataBase
        SQLInit
        
    
        

        CallSubDelayed(Firebasemessaging, "SubscribeToTopics")
    
    Else
    
    
        SQL1.Initialize(SQLDataBasePath, SQLDateBaseName, True)
        'SQLInit
        
        CallSubDelayed(Firebasemessaging, "SubscribeToTopics")

    
    '    Dim SQLQry As String = "DELETE FROM Allacounts"
    'SQL1.ExecNonQuery("DELETE FROM Register")
    

        'SQL1.ExecNonQuery("DROP TABLE IF EXISTS  AcademicsLoadCurve")
        'SQL1.ExecNonQuery("DROP TABLE IF EXISTS  AcademicsLoadCurveP1P2")
        'SQL1.ExecNonQuery("DROP TABLE IF EXISTS  AcademicsLoadCompare")
    'Private query As String
        
        
        '    query =   "CREATE TABLE AcademicsLoadCurve ( Names TEXT, Class TEXT, Stream TEXT, Subject TEXT, Total NUMERIC, Grade TEXT, Mid NUMERIC,Ends NUMERIC,Term TEXT, Years TEXT, id INTEGER,Phone TEXT )"
        'SQL1.ExecNonQuery(query)
    
    '   
        'query =   "CREATE TABLE AcademicsLoadCurveP1P2 ( Names TEXT, Class TEXT, Stream TEXT, Subject TEXT, Total NUMERIC, Grade TEXT, Mid NUMERIC,Ends NUMERIC,Term TEXT, Years TEXT, id INTEGER,Phone TEXT )"
    
    'query =   "CREATE TABLE AcademicsLoadCompare ( Names TEXT, Class TEXT, Stream TEXT, Subject TEXT, Total NUMERIC, Grade TEXT, Mid NUMERIC,Ends NUMERIC,Term TEXT, Years TEXT, id INTEGER,Phone TEXT )"
    'SQL1.ExecNonQuery(query)
        
        
        
        'query = "CREATE TABLE Anouncements (anounce TEXT,Account TEXT,ID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE)"
        'SQL1.ExecNonQuery(query)
        'query = "CREATE TABLE SMSlist (Account Text, Names Text,Phone text,Sex text,ID INTEGER,Phone2 text )"
    'SQL1.ExecNonQuery(query)
        'SQL1.ExecNonQuery("DROP TABLE IF EXISTS Register")
        'query = "CREATE TABLE Register (Code Text, Phone Text, Email Text, Sex Text, ID INTEGER)"
        'SQL1.ExecNonQuery(query)
        
        
        'query =   "CREATE TABLE Academics ( Names TEXT, Class TEXT, Stream TEXT, Subject TEXT, Total NUMERIC, Grade TEXT, Mid NUMERIC,Ends NUMERIC,Term TEXT, Years TEXT, id INTEGER,Phone TEXT )"
        'SQL1.ExecNonQuery(query)
        'query =  "CREATE TABLE Balances (Account Text,Names text, Class text,Stream text,Amount NUMERIC, ID INTEGER,Phone Text )"
        'SQL1.ExecNonQuery(query)
        'query = "CREATE TABLE Alevelreport (Account Text, Points Text,Name text,Subject text, ID INTEGER )"
        'SQL1.ExecNonQuery(query)
        'SQL1.ExecNonQuery("DROP TABLE IF EXISTS  Terms ")
        'SQL1.ExecNonQuery("DROP TABLE IF EXISTS SMSlist")
        'SQL1.ExecNonQuery("DROP TABLE IF EXISTS Recievedsms")
        'SQL1.ExecNonQuery("DROP TABLE IF EXISTS Studentphoto2")
    'query =   "CREATE TABLE Academicspast ( Names TEXT, Class TEXT, Stream TEXT, Subject TEXT, Total NUMERIC, Grade TEXT, Mid NUMERIC,Ends NUMERIC,Term TEXT, Years TEXT, id INTEGER )"
    'SQL1.ExecNonQuery(query)
        'query =   "CREATE TABLE Statement (Account Text,Names text,DESCRIPT text,DEBITAMNT text,CREDITAMNT text, TREF text,TRDATE nvarchar(50),BAL text)"
        'SQL1.ExecNonQuery(query)
        'SQL1.ExecNonQuery("DROP TABLE IF EXISTS Register")
        'query = "CREATE TABLE Register (Code Text, Phone Text, Email Text, Sex Text, ID INTEGER)"
        'SQL1.ExecNonQuery(query)
        'query = "CREATE TABLE Recievedsms (Daterecieved Text, Sms text,ID INTEGER)"
        'SQL1.ExecNonQuery(query)
            
        'query = "CREATE TABLE SMSlist (Account Text, Names Text,Phone text,Sex, ID INTEGER )"
        'SQL1.ExecNonQuery(query)
        'query =   "CREATE TABLE Eventsinfo (Events TEXT, Class TEXT,Stream TEXT, Dates TEXT,Tcode TEXT,    Id    INTEGER Not Null PRIMARY KEY AUTOINCREMENT UNIQUE,Term TEXT,Years TEXT)"
        'SQL1.ExecNonQuery(query)
        'query = "CREATE TABLE Years (Years Text,ID INTEGER )"
        'SQL1.ExecNonQuery(query)
            
        'query = "CREATE TABLE Studentphoto2 (name TEXT, image BLOB,Account TEXT)"
'SQL1.ExecNonQuery(query)
    '    query = "CREATE TABLE Terms (Term Text,Account Text,ID INTEGER )"
    '    SQL1.ExecNonQuery(query)
    End If
End Sub

Sub SQLInit
 

Makumbi

Well-Known Member
Licensed User
Upvote 0

DonManfred

Expert
Licensed User
Longtime User
not when iam running it on my pc
What do you mean exactly? I do not understand.

You can not get any Firebase Notification in a B4J App.
 
Upvote 0

Makumbi

Well-Known Member
Licensed User
How are you sending the messages?

here is my b4j code

B4X:
#Region Project Attributes
    #MainFormWidth: 600
    #MainFormHeight: 600
        #AdditionalJar: sqlite-jdbc-3.27.2.1
        
#End Region


Sub Process_Globals
    Private fx As JFX
    Private MainForm As Form

    Private const API_KEY As String ="MY KEY"
    

    Private xui As XUI
    Private fx As JFX
    Private MainForm As Form
    Public SelectedRowID As Long
    Public RowIDList As List
    Public SQL1 As SQL
    Private spnSupplier As B4XComboBox
    Private stream As B4XView
    Private message As B4XView
'    Private class As B4XView
    Public SQLDataBasePath As String
    Public SQLDateBaseName As String
    Private ResultSet1 As ResultSet
    Private B4XTable1 As B4XTable
    Private Dialog As B4XDialog
    Private InputTemplate As B4XInputTemplate
    Private xui As XUI
    
    Dim Phonex As String
    Dim Account As String
    Dim Valuexr As String
End Sub
Private Sub SendMessage(Topic As String, Title As String, Body As String,sound As String)
    Dim Job As HttpJob
    Job.Initialize("fcm", Me)
    Dim m As Map = CreateMap("to": $"/topics/${Topic}"$)
    Dim data As Map = CreateMap("title": Title, "body": Body, "sound": "Sendsms")
    m.Put("data", data)
    Dim jg As JSONGenerator
    jg.Initialize(m)
    Job.PostString("https://fcm.googleapis.com/fcm/send", jg.ToString)
    Job.GetRequest.SetContentType("application/json")
    Job.GetRequest.SetHeader("Authorization", "key=" & API_KEY)
End Sub


Sub JobDone(job As HttpJob)
    Log(job)
    If job.Success Then
        Log(job.GetString)
    End If
    job.Release
    'StopMessageLoop '<-- non ui app only
End Sub
Sub AppStart (Form1 As Form, Args() As String)
    SQLDataBasePath = File.DirData("SMIS")
    SQLDateBaseName = "SMISDATA.db"
    
'    File.Delete(SQLDataBasePath, SQLDateBaseName) ' only for testing, removes the database
        
    'check if the database already exists
    If File.Exists(SQLDataBasePath, SQLDateBaseName) = True Then
        'if yes, initialize it
        SQL1.InitializeSQLite(SQLDataBasePath, SQLDateBaseName, True)
        
        'SQlint2
    Else
        'if no, initialize it
        SQL1.InitializeSQLite(SQLDataBasePath, SQLDateBaseName, True)

        'and create it
        SQLInit
    End If
    MainForm = Form1
    'MainForm.RootPane.LoadLayout("Main") 'Load the layout file.
    MainForm.Show
    MainForm.RootPane.LoadLayout("RegisterUsersandroid")

    B4XTable1.Clear
    B4XTable1.AddColumn("Names", B4XTable1.COLUMN_TYPE_TEXT)
    B4XTable1.AddColumn("Class", B4XTable1.COLUMN_TYPE_TEXT).Width=60dip
    B4XTable1.AddColumn("Type", B4XTable1.COLUMN_TYPE_TEXT)
    B4XTable1.AddColumn("Phone", B4XTable1.COLUMN_TYPE_TEXT)
    B4XTable1.AddColumn("Stream", B4XTable1.COLUMN_TYPE_TEXT)
    B4XTable1.AddColumn("Account", B4XTable1.COLUMN_TYPE_TEXT)
    'B4XTable1.AddColumn("Random Number", B4XTable1.COLUMN_TYPE_NUMBERS)
    Dim DATAs As List
    DATAs.Initialize
    Dim rs As ResultSet = SQL1.ExecQuery("SELECT DISTINCT Account,Names,Class,Stream,Phone,Type FROM AndroidUserdata ORDER BY Names ASC;" )
    Do While rs.NextRow
        Dim row(5) As Object
                    
        row(1) = rs.GetString("Names")
        row(4) = rs.GetString("Class")
        row(0) = rs.GetString("Type")
        row(3) = rs.GetString("Phone")
        row(2) = rs.GetString("Stream")
            
        Log(row(0))
        Log(row(1))
        Log(row(2))
        Log(row(3))
        Log(row(4))
            
            
            
        DATAs.Add(row)
    Loop
    rs.Close
    B4XTable1.SetData(DATAs)
    ReadDataBaseIDs
    InitPage
    'B4XTable1.SetData(data)
    MainForm.Show

    Dialog.Initialize(MainForm.RootPane)
    Dialog.Title = "Editable Table Example"
    InputTemplate.Initialize

End Sub

Sub SQlint2
    Private query As String
    SQL1.ExecNonQuery("DROP TABLE IF EXISTS AndroidUserdata")
    query = "CREATE TABLE AndroidUserdata (Phone Text,Type Text,Names Text,Class Text,Stream Text,Account Text)"
    SQL1.ExecNonQuery(query)
    
        
End Sub



Sub B4XTable1_CellClicked (ColumnId As String, RowId As Long)
    
    If ColumnId = "Names" Then
        If message.Text="" Then
            xui.MsgboxAsync("You Must Write the Message You are Sending Please","SMIS")
            message.RequestFocus
            Return
        End If
    Dim column As B4XTableColumn = B4XTable1.GetColumn(ColumnId)
    Dim value As String = B4XTable1.GetRow(RowId).Get(ColumnId)
    Phonex = B4XTable1.GetRow(RowId).Get("Phone")
        Account = B4XTable1.GetRow(RowId).Get("Account")
        Dim Valuex As String= B4XTable1.GetRow(RowId).Get("Names")
        Valuexr = B4XTable1.GetRow(RowId).Get("Type")
        Dim Valuexclass As String= B4XTable1.GetRow(RowId).Get("Class")
        Dim ValuexrStream As String= B4XTable1.GetRow(RowId).Get("Stream")
        Dim FullName As String = Valuex &": "& Valuexclass & ValuexrStream
        InputTemplate.Text = value &": "& Valuexclass & ValuexrStream
    InputTemplate.lblTitle.Text = column.Id
    'Wait For (Dialog.ShowTemplate(InputTemplate, "OK", "", "CANCEL")) Complete (Result As Int)
        Dim sf As Object = xui.Msgbox2Async("Are You Sure You Want To Send Message To " & Valuex &" 's "&Valuexr&" ?", FullName , "Yes", "Cancel", "No", Null)
    Wait For (sf) Msgbox_Result (Result As Int)
    
        If Result = xui.DialogResponse_Positive Then
            Log("handle")
            
            SendMessage(Phonex, "Kabojja Junior School", message.Text,"Sendsms")
            
                
            
            
        '
    '    B4XTable1.sql1.ExecNonQuery2($"UPDATE data SET ${column.SQLID} = ? WHERE rowid = ?"$, Array As String(InputTemplate.Text, RowId))
    '    B4XTable1.Refresh
    
            Dim hold As String
            Dim rst As ResumableSub = Downloadreply(hold)
            Wait For(rst) Complete (Result1 As String)
            xui.MsgboxAsync("Message Sent Successfully","SMIS")
            message.Text=""
    End If
    End If
    
End Sub


Sub Downloadreply (a As String) As ResumableSub
    Log(Account)
    Log(message.Text)
    Log(Valuexr)
    Log(Phonex)
    Dim j As HttpJob
    j.Initialize("", Me)
    j.Download($"http://kccug.com/KabojjaApp/RecieveSMSReplysingle.ashx?customerId=${Account}&s=${message.Text}&f=${Valuexr}&ph=${Phonex}"$ )
    Wait For (j) JobDone(j As HttpJob)
    If j.Success Then
        j.GetString
    End If
    j.Release
    
    'Return "Good"
    'StopMessageLoop
End Sub

Sub InitPage
    Private Query As String
    Private lstSuppliers As List
    
    Query = "SELECT Class, rowid From Classes"
    ResultSet1 = SQL1.ExecQuery(Query)

    If lstSuppliers.IsInitialized = False Then
        lstSuppliers.Initialize
    End If
    lstSuppliers.Clear
    
    Do While ResultSet1.NextRow
        lstSuppliers.Add(ResultSet1.GetString2(0))
        Log(ResultSet1.GetString2(0))
    Loop
    spnSupplier.SetItems(lstSuppliers)

End Sub
Sub SQLInit
    
    Private query As String
    'SECONDARY
    SQL1.ExecNonQuery("DROP TABLE IF EXISTS Classes")
    query = "CREATE TABLE Classes (Class Text, ID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE)"
    SQL1.ExecNonQuery(query)
    query = "INSERT INTO Classes VALUES ('S1', '1')"
    SQL1.ExecNonQuery(query)
    query = "INSERT INTO Classes VALUES ('S2', '2')"
    SQL1.ExecNonQuery(query)
    query = "INSERT INTO Classes VALUES ('S3', '3')"
    SQL1.ExecNonQuery(query)
    query = "INSERT INTO Classes VALUES ('S4', '4')"
    SQL1.ExecNonQuery(query)
    query = "INSERT INTO Classes VALUES ('S5', '5')"
    SQL1.ExecNonQuery(query)
    query = "INSERT INTO Classes VALUES ('S6', '6')"
    'PRIMARY
    query = "INSERT INTO Classes VALUES ('PRE', '11')"
    SQL1.ExecNonQuery(query)
    query = "INSERT INTO Classes VALUES ('P1', '12')"
    SQL1.ExecNonQuery(query)
    query = "INSERT INTO Classes VALUES ('P2', 13)"
    SQL1.ExecNonQuery(query)
    query = "INSERT INTO Classes VALUES ('P3', '14')"
    SQL1.ExecNonQuery(query)
    query = "INSERT INTO Classes VALUES ('P4', '15')"
    SQL1.ExecNonQuery(query)
    query = "INSERT INTO Classes VALUES ('P5', '16')"
    SQL1.ExecNonQuery(query)
    query = "INSERT INTO Classes VALUES ('P6', '17')"
    SQL1.ExecNonQuery(query)
    query = "INSERT INTO Classes VALUES ('P7', '18')"
    SQL1.ExecNonQuery(query)

    SQL1.ExecNonQuery("DROP TABLE IF EXISTS AndroidUserdata")
    query = "CREATE TABLE AndroidUserdata (Phone Text,Type Text,Names Text,Class Text,Stream Text,Account Text)"
    SQL1.ExecNonQuery(query)
    
    
End Sub

Sub ReadDataBaseIDs
    Private ResultSet1 As ResultSet
    
    RowIDList.Initialize        'initialize the ID list
    'We read only the ID column and put them in a List
    ResultSet1 = SQL1.ExecQuery("SELECT rowid FROM Classes")
    
    RowIDList.Initialize                                'initialize the ID list
    Do While ResultSet1.NextRow
        RowIDList.Add(ResultSet1.GetLong2(0))    'add the ID's to the ID list
    Loop
    ResultSet1.Close
    End Sub
'Return true to allow the default exceptions handler to handle the uncaught exception.
Sub Application_Error (Error As Exception, StackTrace As String) As Boolean
    Return True
End Sub

Sub Button1_Click
    If message.Text="" Then
        xui.MsgboxAsync("You Must Write the Message You are Sending Please","SMIS")
        message.RequestFocus
        Return
    End If
    'StartMessageLoop
    'SendMessage("0701781391", "Kabojja Junior School", "Sports Day is Tommorrow please come all!!!!")
    'SendMessage("0782911364", "Kabojja Junior School", "Tomorrow we are doing mid term exams please come early!!!")
    'SendMessage("0772402193", "Kabojja Junior School"    , "Hello goodwork Congraculations TEACHER ALICE!!!")
    'StartMessageLoop
End Sub

Sub Button2_Click
    Dim SQLQry As String = "DELETE FROM AndroidUserdata"
    SQL1.ExecNonQuery(SQLQry)
    Log(RowIDList.Get(spnSupplier.SelectedIndex))
    Private Query As String
    Private ResultSet1 As ResultSet
    Query = "SELECT Class"
    Query = Query & " FROM Classes"
    Query = Query & " WHERE rowid = " & RowIDList.Get(spnSupplier.SelectedIndex)

    ResultSet1 = SQL1.ExecQuery(Query)
ResultSet1.NextRow
    'class.Text = ResultSet1.GetString2(0)
    'Log(ResultSet1.GetString2(0))
    If stream.Text="" Then
        Dim jtrb As HttpJob
        jtrb.Initialize("", Me)
        jtrb.Download2("http://kccug.com/KabojjaApp/HandlerVBLoadclass.ashx",Array As String("Action", "jtr", "customerId",ResultSet1.GetString2(0)))
        Wait For (jtrb) JobDone(jtrb As HttpJob)
        If jtrb.Success Then
            Log(jtrb.GetString)
        End If
        jtrb.Release
        
        Dim jt As HttpJob
        jt.Initialize("", Me)
        jt.Download("http://kccug.com/KabojjaApp/HandlerVBDisplayload.ashx")
        'j.GetRequest.Timeout = 1000 ' 10 seconds2
        Wait For (jt) JobDone(jt As HttpJob)
        If jt.Success Then ' if job is success (http status code 200)
            Dim RetVal As String
            RetVal = jt.GetString
        
            Dim jp As JSONParser
            jp.Initialize(jt.GetString)
            'Log(jp) ' will pr
            Dim quotes As List = jp.NextArray
            For Each quot As Map In quotes
                Log("Phone: " & quot.Get("Phone"))
                Log("Type: " & quot.Get("Type"))
                Log("Class: " & quot.Get("class"))
                Log("Stream: " & quot.Get("Stream"))
                Log("Names: " & quot.Get("Names"))
                Log("Account: " & quot.Get("Account"))
                        
                
                
                SQL1.ExecNonQuery2("INSERT INTO AndroidUserdata VALUES(?, ?, ?,?, ?,?)", Array As Object(quot.Get("Phone"), quot.Get("Names"), quot.Get("class") ,quot.Get("Stream"),quot.Get("Type"),quot.Get("Account")))
                                                                
        jt.Release

                'Loop
                Next
            'jk.Release

            'Return
        End If

        B4XTable1.Clear
        B4XTable1.AddColumn("Names", B4XTable1.COLUMN_TYPE_TEXT)
        B4XTable1.AddColumn("Class", B4XTable1.COLUMN_TYPE_TEXT).Width=60dip
        B4XTable1.AddColumn("Type", B4XTable1.COLUMN_TYPE_TEXT)
        B4XTable1.AddColumn("Phone", B4XTable1.COLUMN_TYPE_TEXT)
        B4XTable1.AddColumn("Stream", B4XTable1.COLUMN_TYPE_TEXT)
        B4XTable1.AddColumn("Account", B4XTable1.COLUMN_TYPE_TEXT)
        'B4XTable1.AddColumn("Random Number", B4XTable1.COLUMN_TYPE_NUMBERS)
        Dim DATAs As List
        DATAs.Initialize
        Dim rs As ResultSet = SQL1.ExecQuery("SELECT DISTINCT Account,Names,Class,Stream,Phone,Type FROM AndroidUserdata ORDER BY Names ASC;" )
        Do While rs.NextRow
            Dim row(6) As Object
                    
            row(1) = rs.GetString("Names")
            row(4) = rs.GetString("Class")
            row(0) = rs.GetString("Type")
            row(3) = rs.GetString("Phone")
            row(2) = rs.GetString("Stream")
            row(5) = rs.GetString("Account")
            
            Log(row(0))
            Log(row(1))
            Log(row(2))
            Log(row(3))
            Log(row(4))
            
            
            
            DATAs.Add(row)
        Loop
        rs.Close
        B4XTable1.SetData(DATAs)
        'B4XTable1.Refresh
    Else
    Dim jtr As HttpJob
    jtr.Initialize("", Me)
    jtr.Download2("http://kccug.com/KabojjaApp/HandlerVBLoadclassstream.ashx",Array As String("Action", "jtr", "customerId",ResultSet1.GetString2(0), "customerId2", stream.Text))
        Wait For (jtr) JobDone(jtr As HttpJob)
    If jtr.Success Then
            Log(jtr.GetString)
        End If
        jtr.Release
    
    
        Dim j As HttpJob
        j.Initialize("", Me)
        j.Download("http://kccug.com/KabojjaApp/HandlerVBDisplayload.ashx")
        'j.GetRequest.Timeout = 1000 ' 10 seconds
        Wait For (j) JobDone(j As HttpJob)
        If j.Success Then ' if job is success (http status code 200)
            Dim RetVal As String
            RetVal = j.GetString
            Log(RetVal)
            Dim jp As JSONParser
            jp.Initialize(j.GetString)
            'Log(jp) ' will pr
            Dim quotes As List = jp.NextArray
            For Each quot As Map In quotes
                Log("Phone: " & quot.Get("Phone"))
                Log("Type: " & quot.Get("Type"))
                Log("Class: " & quot.Get("class"))
                Log("Stream: " & quot.Get("Stream"))
                Log("Names: " & quot.Get("Names"))
                SQL1.ExecNonQuery2("INSERT INTO AndroidUserdata VALUES(?, ?, ?,?, ?,?)", Array As Object(quot.Get("Phone"), quot.Get("Names"), quot.Get("class") ,quot.Get("Stream"),quot.Get("Type"),quot.Get("Account")))
                        
            '    SQL1.ExecNonQuery2("INSERT INTO AndroidUserdata VALUES(?, ?, ?,?, ?)", Array As Object(quot.Get("Phone"), quot.Get("Names"), quot.Get("class") ,quot.Get("Stream"),quot.Get("Type")))
    
                                                                
                j.Release
                                        
            Next
            
            'Return
        End If
    
    
        B4XTable1.Clear
        B4XTable1.AddColumn("Names", B4XTable1.COLUMN_TYPE_TEXT)
        B4XTable1.AddColumn("Class", B4XTable1.COLUMN_TYPE_TEXT).Width=60dip
        B4XTable1.AddColumn("Type", B4XTable1.COLUMN_TYPE_TEXT)
        B4XTable1.AddColumn("Phone", B4XTable1.COLUMN_TYPE_TEXT)
        B4XTable1.AddColumn("Stream", B4XTable1.COLUMN_TYPE_TEXT)
        B4XTable1.AddColumn("Account", B4XTable1.COLUMN_TYPE_TEXT)
        'B4XTable1.AddColumn("Random Number", B4XTable1.COLUMN_TYPE_NUMBERS)
        Dim DATAs As List
        DATAs.Initialize
        Dim rs As ResultSet = SQL1.ExecQuery("SELECT DISTINCT Account,Names,Class,Stream,Phone,Type FROM AndroidUserdata ORDER BY Names ASC;" )
        Do While rs.NextRow
            Dim row(6) As Object
                    
            row(1) = rs.GetString("Names")
            row(4) = rs.GetString("Class")
            row(0) = rs.GetString("Type")
            row(3) = rs.GetString("Phone")
            row(2) = rs.GetString("Stream")
            row(5) = rs.GetString("Account")
            Log(row(0))
            Log(row(1))
            Log(row(2))
            Log(row(3))
            Log(row(4))
            
            
            
            DATAs.Add(row)
        Loop
        rs.Close
        B4XTable1.SetData(DATAs)
    
    
    End If

End Sub

Sub Button3_Click
    If message.Text="" Then
        xui.MsgboxAsync("You Must Write the Message You are Sending Please","SMIS")
        message.RequestFocus
        Return
    End If
    Dim jt As HttpJob
    jt.Initialize("", Me)
    jt.Download("http://kccug.com/KabojjaApp/HandlerVBSendload.ashx")
    'j.GetRequest.Timeout = 1000 ' 10 seconds2
    Wait For (jt) JobDone(jt As HttpJob)
    If jt.Success Then ' if job is success (http status code 200)
        Dim RetVal As String
        RetVal = jt.GetString
        Log(RetVal)
        Dim jp As JSONParser
        jp.Initialize(jt.GetString)
        'Log(jp) ' will pr
        Dim quotes As List = jp.NextArray
        For Each quot As Map In quotes
            Log("Phone: " & quot.Get("Phone"))
            
            SendMessage(quot.Get("Phone"), "Kabojja Junior School", message.Text,"Sendsms")
            
            Dim j As HttpJob
            j.Initialize("", Me)
            j.Download($"http://kccug.com/KabojjaApp/RecieveSMSReplysingle.ashx?customerId=${quot.Get("Account")}&s=${message.Text}&f=${quot.Get("Type")}&ph=${quot.Get("Phone")}"$ )
            Wait For (j) JobDone(j As HttpJob)
            If j.Success Then
                j.GetString
            End If
        
            
            
        Next
        'jk.Release
        
        'Return
    End If
    jt.Release
    j.Release
    message.Text=""
End Sub
 
Upvote 0
Top