Spanish Error en Mysql en algunos dispositivos

TheFalcon

Active Member
Licensed User
Buenas, veréis al publicar mi aplicación me he dado cuenta que hay dispositivos en los que me da error.
mi aplicación cuando abre descarga una noticia que hay en una mysql , en algunos dispositivos funciona en otros me da el siguiente error dentro del
B4X:
 JobDone(Job As HttpJob)



la web es donde tengo el archivo de query.php


He probado a modificar la aplicación SOLO con la consulta de noticias(por que tengo varias en la misma) , a compilarla con otro nombre, y en el mismo movil que da error, NO lo da. con lo cual quiero pensar que es de alguna consulta, pero me mosquea mucho que en algunos dispositivos de ese error y en otros vaya perfecto.

Pego el código Modificado solo con la consulta de noticias activa, dentro esta el resto de consultas pero comentadas , en la aplicación que da error no están comentadas.

Agradecería de vuestra sabiduría, que Jose J. Aguilar me esta ayudando por privado pero lo voy a volver majara, y entre todos seguros que dais con el problema. Pego el código y gracias por vuestro preciado tiempo

B4X:
Sub JobDone(Job As HttpJob)
    Dim MI_RES As String
    Dim mi_res_admin As String
    
    
    
    
    ProgressDialogHide
    If Job.Success Then
    
        Dim res As String
        res = Job.GetString
        Log("Response from server: " & res)
        
        MI_RES = res  ' pasamos el valor de res  a mi_res , por que si no nos da error al ponerle res = "" en el if.
        mi_res_admin = res ' pasamos el valor a esta variable que la usaremo para los if de admin
    
    
        
'        If dni_boolean=True Then   ' si no consigue respuesta entraria aqui para avisar
'            If MI_RES = "[]" Then
'                'si no existe el DNI escrito entra aqui
'                Msgbox("El DNI introducido, no esta Registrado, si es socio en activo, por favor póngase en contacto con la Sociedad","Atención")
'               
'                dni_boolean=False  'para que no vuelva a entrar aqui al salir de socios = true
'            End If
'            MI_RES = ""  ' para que se limpie la variable si no me repite el msgbox
'        End If
'   




'           
'        If Socios=True Then ' DETECTA QEUh EMOS PULSADO EL BOTON DE SOCIOS
'            If MI_RES = "[]" Then
'                'si no Existe la ID entra aqui y llama al boton pedir DNI que pide el DNI
'                bt_pidedni_click
'                Socios=False 'para que no vuelva a entrar aqui al salir de dni = true
'            End If
'        End If
    
        
        
'        'IF DE ADMIN
'        'detecta que emos pulsado el boton admin, si la respuesta es mala (  [] ) entonces pide la clave
'        If admin=True Then
'            If mi_res_admin = "[]" Then
'                'si no existe el DNI escrito entra aqui
'                bt_pideclave_click
'                admin=False  'para que no vuelva a entrar aqui al salir de socios = true
'            End If
'            mi_res_admin = ""  ' para que se limpie la variable si no me repite el msgbox
'        End If

    
    
        '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        '++++                        AQUI EMPIEZAN LOS CASE DE SOCIOS
        '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        Dim parser As JSONParser
        'res=res.SubString2(res.IndexOf("["),res.IndexOf("]"))
        parser.Initialize(res)
        Select Job.JobName
        
    
        
        
            '    'ESTA CONSULTA SE EJECUTA AL ARRANCAR Y COGE LA ULTIMA NOTICIA POR FECHA
            Case consulta_noticias
                Dim CONSULTA As List
                CONSULTA = parser.NextArray 'returns a list with maps
            
                Dim m As Map
                m = CONSULTA.Get(0) ' pongo get 0 para que coja el 1 registro asi no e de hacer un for y un exit.  v.3.0
                                        
                fecha_mysql=m.Get("fecha") 'coge la fecha de mysql
                titulo_mysql=m.Get("titulo")'coge titulo de mysq
                noticia_mysql=m.Get("noticia")'coge noticia de mysq
                
                
                
                
                'AQUI RELLENA LOS CAMPOS DE LA NOTICIA
                lblfecha.Text = fecha_mysql
                lbltitulo.Text = titulo_mysql
                'lblnoticia.Text = noticia_mysql
                HtmlString = noticia_mysql
                cargar_html_fran
'               
'           


'            Case consulta_socios
'           
'                Dim CONSULTA As List
'                CONSULTA = parser.NextArray 'returns a list with maps
'                For i = 0 To CONSULTA.Size - 1
'                    Dim m As Map
'                    m = CONSULTA.Get(i)
'   
'                    idmovil_mysql=m.Get("id_movil") 'coge la fecha de mysql
'                    dni_mysql=m.Get("dni")
'   
'                    StartActivity(Panel_Socios)
'
'                Next
                
                    
                    
                    
                    
'                   
'                'AQUI ENTRA CUANDO EL DNI QUE EMOS PUESTO EN EL INPUTBOX, COINCIDE CON EL DE LA BASE DE DATOS
'                ' Y COMPROBARA ID DEL DISPOSITIVO (SI ESTA VACIA METE LA NUESTRA)    (SI TIENE ALGO AVISA QUE YA ESTA VINCULADO ESE DNI)
'
'            Case consulta_dni ' entra aqui cuando el dni que hemos puesto coincide con el de la base de datos
'           
'                Dim CONSULTA As List
'                CONSULTA = parser.NextArray 'returns a list with maps
'                For i = 0 To CONSULTA.Size - 1
'                    Dim m As Map
'                    m = CONSULTA.Get(i)
'               
'                   
'                    idmovil_mysql=m.Get("id_movil") 'coge la fecha de mysql
'                    dni_mysql=m.Get("dni")
'                   
'                    If idmovil_mysql = "" Then ' SI LA ID ESTA VACIA PONE LA NUESTRA
'                        ExecuteRemoteQuery("UPDATE Socios SET id_movil = '"&MI_ID&"' where dni = '"& dni&"'",Null)
'                       
'                        MI_RES = ""  ' para que no entre en el if de comprobar DNI otra vez
'                        dni_boolean = False
'                       
'                        ToastMessageShow("Dispositivo Añadido, ya puede acceder al apartado de Socios",True)
'                        Exit
'                       
'                    else if idmovil_mysql <> MI_ID Then ' SI ID YA ESTA ESCRITO Y ES DISTINTA A LA MIA
'                        Msgbox("Este DNI ya esta asignado a un Dispositivo","Atención")
'                   
'                        MI_RES = ""
'                        dni_boolean=False
'           
'                    End If
'
'                Next
'
'                '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'                '++++                        AQUI ACABAN LOS CASE DE SOCIOS
'                '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'
'
'               
'                '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'                '++++                        AQUI EMPIEZA LOS CASE DE ADMIN
'                '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'            Case consulta_admin
'           
'                Dim CONSULTA As List
'                CONSULTA = parser.NextArray 'returns a list with maps
'                For i = 0 To CONSULTA.Size - 1
'                    Dim m As Map
'                    m = CONSULTA.Get(i)
'                               
'                    idmovil_mysql=m.Get("id_movil") 'coge la fecha de mysql
'                    dni_mysql=m.Get("dni")
'                    admin_mysql = m.Get("admin")
'                    clave_admin = m.Get("clave_admin")
'                   
'                    ' si mi ID esta registrada y el campo admin = SI   carga el panel
'                    If admin_mysql= "SI" And MI_ID = idmovil_mysql Then
'                        StartActivity(Panel_Admin)
'                       
'                       
'                        'si la ID existe pero no eres admin  , te pide clave.
'                    else if admin_mysql= "NO" And idmovil_mysql = MI_ID Then
'                        bt_pideclave_click
'                    End If
'                Next

'
'                'aqui comprueba si la clave que hemos puesto coincide con la clave de la base de datos.
'            Case consulta_clave
'           
'                Dim CONSULTA As List
'                CONSULTA = parser.NextArray 'returns a list with maps
'                For i = 0 To CONSULTA.Size - 1
'                    Dim m As Map
'                    m = CONSULTA.Get(i)
'                   
'                    clave_admin = m.Get("clave_admin")
'                   
'                    'comprprueba que coincida la clave escrita con la de la base de datos, o con la clave maestra mia.
'                    If clave_admin = clave_escrita Or clave_escrita = clavemaestra Then
'                        StartActivity(Panel_Admin)
'                       
'                    else if clave_admin <> clave_escrita Then ' si no coincide te avisa
'                           
'                        Msgbox("Contraseña Incorrecta","Error")
'                    End If
'           
'                Next
'   

        
        End Select
        
    Else
        
        Log(Job.ErrorMessage)
        '    ToastMessageShow("Ha habido algun problema a la hora de conectar a la base de datos, intentalo mas tarde",True)
        MsgboxAsync("Error: " & Job.ErrorMessage,"ERROR")
        ToastMessageShow("Error: " & Job.ErrorMessage, True) ' quito este que si da error muestra la direccion web de la mysql
    End If




    
    Job.Release
    
End Sub

en el activity create cuando abro la aplicación pongo que consulte las noticias

B4X:
    If IsConnected = True Then ' si hay conexion a internet, comprueba las licencias con mysql.
        
        '    ExecuteRemoteQuery("SELECT correo, id_dispositivo FROM licencias", consulta_mysql)
        
        ExecuteRemoteQuery("SELECT id,fecha,titulo,noticia FROM noticias ORDER by id desc",consulta_noticias )
    
            
        If FirstTime Then
            hc.Initialize("hc")
        End If
    





    
    Else ' si no hay internet, arranca normal
        
        Msgbox("No se a podido comprobar la conexión a Internet, verifica que estas conectado/a","Atención")
    End If
 

TheFalcon

Active Member
Licensed User
Gracias lo voy a probar no vi eso, no me van los tios pero como sea eso voy a buscarte y te doy un beso en la boca :p
 

TheFalcon

Active Member
Licensed User
me da el siguiente error , e visto que si es sdk de 9 para arriba es false, si es de 9 para abajo true, pero con ambos me da ese error, estoy medio dormido asi que mañana me mirare el enlace en ingles que me pasaste tranquilo y con calma.
Un saludo y buenas noches
B4X:
Generating R file.    Error
AndroidManifest.xml:25: error: No resource identifier found for attribute 'usesCleartextTraffic' in package 'android'
 

TheFalcon

Active Member
Licensed User
Bueno, e estado probando y nada, he actualizado mediante el SdK manager, las librerías en las que había actualizaciones y ahora no me da el error anterior, me da

B4X:
AndroidManifest.xml:29: error: Error parsing XML: not well-formed (invalid token)
y el error sigue siendo de la linea anterior de 'usesCleartextTraffic' , ya que si la quito el código va como la seda.
 
Last edited:

TheFalcon

Active Member
Licensed User
Si estoy usando okHttputils2, miro ese hilo que me comentas a ver que tal y te comento
 

TheFalcon

Active Member
Licensed User
y lo cambie por

B4X:
CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)
Por le momento me dejo compilar y no me dio error al abrirlo, le mande la apk a un amigo que tenia una versión de móvil en la cual reproducía el 1º error, a la espera de que me conteste.

Por lo visto todo se fue al carajo al cambia la SDKversion que yo hice la aplicación con una 10 o así, y para subir a google me obligaba a poner una 29, y en esa diferencia cambio muchos permisos etc
 

scsjc

Well-Known Member
Licensed User
Hola,

Me parece que falta que la url la pongas con HTTPS.... ya que en las ultimas SDK (28...29) piden https
Y la solución correcta que encontré fue simplemente esa HTTPS en las url que abres

Saludos
 

scsjc

Well-Known Member
Licensed User
si necesitas que la URL funciones con HTTP puedes usar en el manifest:

SetApplicationAttribute(android:usesCleartextTraffic, "true")
 
Top