Spanish Whatsapp automatico (Solucionado)

Jannete

Member
4.- Igual que en el punto 2, el intent de imagen es lo único que me sigue faltando y la forma de poder enviarlo mediante whatsapp.
copia la sub que envías whatsapp aquí para revisar y hacerme un ejemplo para probarlo.

PD: Tal vez un poco fuera de tema, como se traza la ruta en el maps?, no hay que pagar o dar de alta una tarjeta bancaria para poder usar el api de geolocation?.
las políticas de google api android no deja muy claro el limite de peticiones de routes. pero si el limite waypoits puntos

utilizamos apis de google y osrm y otras


Estamos preparando un servidor de maps propias.



,

De nuevo muchas gracias. Avance mucho, me quedo en la parte de elegir la burbuja del contacto (abro el edit del whatsapp para buscar contacto, lo busco, y ya no puedo elegirlo).

Lo hice siguiendo los logs. El intent para enviar la imagen ya esta, solo me falta el detalle de elegir el contacto con la biblioteca de accesibilidad.

Adjunte lo que llevo con respecto a, para mas facil. El acservice es el que no termino por lo descrito anteriormente.

De nuevo gracias.
 

Attachments

  • WhatsAppImagen.zip
    14.8 KB · Views: 387

astronald

Active Member
Licensed User
Longtime User
Hola buen dia, yo envio mensajes al contacto especifico de esta forma:
B4X:
        Dim intWA As Intent
        intWA.Initialize(intWA.ACTION_SEND, "")
        intWA.setType("image/jpg")
        intWA.putExtra("jid", "[email protected]")
        intWA.PutExtra("android.intent.extra.STREAM", Starter.Provider.GetFileUri("imagen.jpg"))
        intWA.setPackage("com.whatsapp")
        StartActivity(intWA)

la clave esta en esta linea
B4X:
intWA.putExtra("jid", "[email protected]")
hay que agregarle el @c.us al numero esto evita el selector de usuario y lo abre directamente.

Avisas si te funciona, yo he logrado varias cosas con Whatsapp.
 

astronald

Active Member
Licensed User
Longtime User
Esta es mi función que escucha los eventos de Accesibilidad
B4X:
Sub acs_OnAccessibilityEvent (Event As Object, node As Object) 'ignore
    Dim Evento As JavaObject = Event
    Dim paquete As String = Evento.RunMethod("getPackageName", Array As Object())
    If paquete <> "com.whatsapp" Then Return
    paquete = Evento.RunMethod("getEventType", Array As Object())
    If paquete = 8 Then
        If EnviandoMensaje  Then
            Enviado = acs.PerformNodeActionOnViewWithArgs(True, "com.whatsapp.w4b:id/send",AccServConstants.ACTION_CLICK, Null)
            EnviandoMensaje=False          
        End If  
    else If paquete = 2048 Then
        If Not( EnviandoMensaje)  Then acs.PerformGlobalAction(AccServConstants.GLOBAL_ACTION_BACK)
    End If
End Sub
 

Jannete

Member
Hola buen dia, yo envio mensajes al contacto especifico de esta forma:
B4X:
        Dim intWA As Intent
        intWA.Initialize(intWA.ACTION_SEND, "")
        intWA.setType("image/jpg")
        intWA.putExtra("jid", "[email protected]")
        intWA.PutExtra("android.intent.extra.STREAM", Starter.Provider.GetFileUri("imagen.jpg"))
        intWA.setPackage("com.whatsapp")
        StartActivity(intWA)

la clave esta en esta linea
B4X:
intWA.putExtra("jid", "[email protected]")
hay que agregarle el @c.us al numero esto evita el selector de usuario y lo abre directamente.

Avisas si te funciona, yo he logrado varias cosas con Whatsapp.

Antes que nada muchas gracias.

Probe con el codigo, pero aun me sigue saltando el contact picker (aun poniendo la linea tal y cual esta). Intente cambiar el us por mx, por es, puse un numero a 10 digitos, a 12 y a 13 y aun asi nada.

Nuevamente gracias!

Edito: Me funciono este codigo en lugar del tuyo:

intWA.putExtra("jid", "[email protected]")
 
Last edited:

Jannete

Member
Esta es mi función que escucha los eventos de Accesibilidad
B4X:
Sub acs_OnAccessibilityEvent (Event As Object, node As Object) 'ignore
    Dim Evento As JavaObject = Event
    Dim paquete As String = Evento.RunMethod("getPackageName", Array As Object())
    If paquete <> "com.whatsapp" Then Return
    paquete = Evento.RunMethod("getEventType", Array As Object())
    If paquete = 8 Then
        If EnviandoMensaje  Then
            Enviado = acs.PerformNodeActionOnViewWithArgs(True, "com.whatsapp.w4b:id/send",AccServConstants.ACTION_CLICK, Null)
            EnviandoMensaje=False         
        End If 
    else If paquete = 2048 Then
        If Not( EnviandoMensaje)  Then acs.PerformGlobalAction(AccServConstants.GLOBAL_ACTION_BACK)
    End If
End Sub

Probe con este codigo, funciona bien (aunque despues de forzarlo a pruebas constantes deja de enviar la imagen), por otro lado (aunque en el caso que me ocupa no le veo tanto problema a menos que utilicen Talkback para enviar mensajes por voz), el whatsapp se cierra solo (tenia mi telefono como prueba, y de repente se empezo a cerrar solo), lo solucione con este codigo (aunque creo que le falta limpieza, refiriendome a que usa cronometros):

B4X:
Sub acs_OnAccessibilityEvent (Event As Object, node As Object) 'ignore
    If ShallWeSendWhatsApp Then
        Dim TipoEvento As String
        Dim Evento As JavaObject = Event
        Dim paquete As String = Evento.RunMethod("getPackageName", Array As Object())
        If paquete <> "com.whatsapp" Then Return

        TipoEvento = Evento.RunMethod("getEventType", Array As Object())
        
        If contador = 1 Then
            acs.delay(1000)
            Log("AAAAAAAA")
            acs.PerformNodeActionOnViewWithArgs(True, "com.whatsapp:id/send",AccServConstants.ACTION_CLICK, Null)
            'acs.PerformNodeActionOnViewWithArgs(True, "com.whatsapp.w4b:id/send",AccServConstants.ACTION_CLICK, Null)
            contador = 2       
        Else If contador = 2 Then
            If TipoEvento = 2048 Then
                acs.delay(1500)
                Log("BBBBBBBB")
                acs.PerformGlobalAction(AccServConstants.GLOBAL_ACTION_BACK)
                contador = 3
            End If
        Else If contador = 3 Then
            If TipoEvento = 2048 Then
                acs.delay(2000)
                Log("CCCCCCC")
                acs.PerformGlobalAction(AccServConstants.GLOBAL_ACTION_BACK)
                ShallWeSendWhatsApp = False
            End If           
        End If
    End If
End Sub
 

molder26

Member
Licensed User
Longtime User
Esta es mi función que escucha los eventos de Accesibilidad
B4X:
Sub acs_OnAccessibilityEvent (Event As Object, node As Object) 'ignore
    Dim Evento As JavaObject = Event
    Dim paquete As String = Evento.RunMethod("getPackageName", Array As Object())
    If paquete <> "com.whatsapp" Then Return
    paquete = Evento.RunMethod("getEventType", Array As Object())
    If paquete = 8 Then
        If EnviandoMensaje  Then
            Enviado = acs.PerformNodeActionOnViewWithArgs(True, "com.whatsapp.w4b:id/send",AccServConstants.ACTION_CLICK, Null)
            EnviandoMensaje=False         
        End If 
    else If paquete = 2048 Then
        If Not( EnviandoMensaje)  Then acs.PerformGlobalAction(AccServConstants.GLOBAL_ACTION_BACK)
    End If
End Sub

Hello astronald
Do you have an example code of this sub working?
Regards
 
Top