Sub btnSend_Click
Si txtMsg.Text.Length> 0 Entonces
Dim number As String = "+5215526098764" 'aquí va el número de teléfono del contacto
número = número. Reemplazar ("+", ""). Reemplazar ("", "")
'Mensaje tenue como cadena = txtMsg.Text.trim
'Dim numero As String = number
Dim Intent1 As Intent
Dim pm como PackageManager
Intent1 = pm.GetApplicationIntent ("com.whatsapp")
Si Intent1.IsInitialized entonces
'Aqui pienso que iria el Intent de Whatsapp o el codigo de liberia que abre el dialogo de enviar imagen
Si WhatsApp está instalado ...
Dim Intent2 As Intent
Intent2.Initialize (Intent2.ACTION_VIEW, $ "https://wa.me/${numero}?text=${messaggio}" $)
'<uses-sdk android: minSdkVersion = "21" android: targetSdkVersion = "28" />
StartActivity (Intent2)
Más
ToastMessageShow ("WhatsApp no está instalado", True)
Regreso
Terminara si
Terminara si
CallSub (AccService, "SendWhatsAppMsg")
Sub btnSend_Click
Si txtMsg.Text.Length> 0 Entonces
Dim number As String = "+5217442098810" 'aquí va el número de teléfono del contacto
número = número. Reemplazar ("+", ""). Reemplazar ("", "")
'Dim messaggio As String = "Prueba de Whatsapp sin interfaz grafica"' txtMsg.Text.trim
'Dim numero As String = number
Dim Intent1 As Intent
Dim pm como PackageManager
Intent1 = pm.GetApplicationIntent ("com.whatsapp")
Si Intent1.IsInitialized entonces
'' '' '
'Prueba 1'
Intención tenue como intención
intent.Initialize (intent.ACTION_SEND, "")
intent.SetType ("imagen / jpg")
Dim img As String = "myimage.jpg"
intent.SetComponent ("com.whatsapp / .ContactPicker")
intent.PutExtra ("android.intent.extra.STREAM", CreateFileProviderUri (Starter.SharedFolder, img))
StartActivity (intento)
''
'Dim FileToSend As String = "Alejandria.jpg"
'File.Copy (File.DirAssets, FileToSend, Starter.Provider.SharedFolder, FileToSend)
''
'
'Dim i As Intent
'
'i.Initialize (i.ACTION_SEND, "")
'i.PutExtra ("android.intent.extra.TEXT", "Hola")
'i.SetType ("texto / sin formato")
'
'
'' Dim u As Uri
'' u.Parse ("file: //" & File.Combine (File.DirRootExternal, NomeImmagine))
'' i.PutExtra ("android.intent.extra.STREAM", u)
'
'i.PutExtra ("android.intent.extra.STREAM", Starter.Provider.GetFileUri (FileToSend))
'
''
'
'i.SetType ("image / jpeg")
'Dim jo Como JavaObject = i
'jo.RunMethod ("setPackage", Array ("com.whatsapp"))
'StartActivity (i)
'Fin prueba 1'
'
'' pueba 2
'Dim en como intento
'in.Initialize (in.ACTION_SEND, "")
'in.SetType ("text / plain")' no está relacionado con el archivo en sí.
'in.PutExtra ("android.intent.extra.STREAM", CreateFileProviderUri (Starter.shared, "share.jpeg"))
'in.WrapAsIntentChooser ("Compartir")
'
'in.Flags = 1
'StartActivity (en)
'' finprueba 2
'' Si WhatsApp está instalado ...
'Dim Intent2 As Intent
'Intent2.Initialize (Intent2.ACTION_VIEW, $ "https://wa.me/${numero}?text=${messaggio}" $)
'
'' <uses-sdk android: minSdkVersion = "21" android: targetSdkVersion = "28" />
'StartActivity (Intent2)
Más
ToastMessageShow ("WhatsApp no está instalado", True)
Regreso
Terminara si
Terminara si
CallSub (AccService, "SendWhatsAppMsg")
End Sub
Antes que nada, gracias por su respuesta.
@José J. Aguilar , se que Whatsapp no tiene esa característica, así que pense en la liberia de Accesibilidad que cite en el pimer post. De hecho pense tambien en algo asi como la libreria SendInput (que emula pulsaciones), solo que no se puede usar desde un servicio (si es posible, se puede usar el codigo de la liberia Whatsapp, para abir el whatsapp directamente con la imagen esperando al boton enviar).
El ejemplo de la liberia de accesibilidad es.
B4X:Sub btnSend_Click Si txtMsg.Text.Length> 0 Entonces Dim number As String = "+5215526098764" 'aquí va el número de teléfono del contacto número = número. Reemplazar ("+", ""). Reemplazar ("", "") 'Mensaje tenue como cadena = txtMsg.Text.trim 'Dim numero As String = number Dim Intent1 As Intent Dim pm como PackageManager Intent1 = pm.GetApplicationIntent ("com.whatsapp") Si Intent1.IsInitialized entonces 'Aqui pienso que iria el Intent de Whatsapp o el codigo de liberia que abre el dialogo de enviar imagen Si WhatsApp está instalado ... Dim Intent2 As Intent Intent2.Initialize (Intent2.ACTION_VIEW, $ "https://wa.me/${numero}?text=${messaggio}" $) '<uses-sdk android: minSdkVersion = "21" android: targetSdkVersion = "28" /> StartActivity (Intent2) Más ToastMessageShow ("WhatsApp no está instalado", True) Regreso Terminara si Terminara si CallSub (AccService, "SendWhatsAppMsg")
En el segundo intento es donde creo yo que deberia de ir el codigo para cargar la imagen.
@oparra , estoy tratando pero no logo hacerlo funcionar, cargue el FileProvider, pero ninguno de mis intentos me ha funcionado:
B4X:Sub btnSend_Click Si txtMsg.Text.Length> 0 Entonces Dim number As String = "+5217442098810" 'aquí va el número de teléfono del contacto número = número. Reemplazar ("+", ""). Reemplazar ("", "") 'Dim messaggio As String = "Prueba de Whatsapp sin interfaz grafica"' txtMsg.Text.trim 'Dim numero As String = number Dim Intent1 As Intent Dim pm como PackageManager Intent1 = pm.GetApplicationIntent ("com.whatsapp") Si Intent1.IsInitialized entonces '' '' ' 'Prueba 1' Intención tenue como intención intent.Initialize (intent.ACTION_SEND, "") intent.SetType ("imagen / jpg") Dim img As String = "myimage.jpg" intent.SetComponent ("com.whatsapp / .ContactPicker") intent.PutExtra ("android.intent.extra.STREAM", CreateFileProviderUri (Starter.SharedFolder, img)) StartActivity (intento) '' 'Dim FileToSend As String = "Alejandria.jpg" 'File.Copy (File.DirAssets, FileToSend, Starter.Provider.SharedFolder, FileToSend) '' ' 'Dim i As Intent ' 'i.Initialize (i.ACTION_SEND, "") 'i.PutExtra ("android.intent.extra.TEXT", "Hola") 'i.SetType ("texto / sin formato") ' ' '' Dim u As Uri '' u.Parse ("file: //" & File.Combine (File.DirRootExternal, NomeImmagine)) '' i.PutExtra ("android.intent.extra.STREAM", u) ' 'i.PutExtra ("android.intent.extra.STREAM", Starter.Provider.GetFileUri (FileToSend)) ' '' ' 'i.SetType ("image / jpeg") 'Dim jo Como JavaObject = i 'jo.RunMethod ("setPackage", Array ("com.whatsapp")) 'StartActivity (i) 'Fin prueba 1' ' '' pueba 2 'Dim en como intento 'in.Initialize (in.ACTION_SEND, "") 'in.SetType ("text / plain")' no está relacionado con el archivo en sí. 'in.PutExtra ("android.intent.extra.STREAM", CreateFileProviderUri (Starter.shared, "share.jpeg")) 'in.WrapAsIntentChooser ("Compartir") ' 'in.Flags = 1 'StartActivity (en) '' finprueba 2 '' Si WhatsApp está instalado ... 'Dim Intent2 As Intent 'Intent2.Initialize (Intent2.ACTION_VIEW, $ "https://wa.me/${numero}?text=${messaggio}" $) ' '' <uses-sdk android: minSdkVersion = "21" android: targetSdkVersion = "28" /> 'StartActivity (Intent2) Más ToastMessageShow ("WhatsApp no está instalado", True) Regreso Terminara si Terminara si CallSub (AccService, "SendWhatsAppMsg") End Sub
Ninguno de los anteriores (más otras pruebas que él borrado) me han funcionado.
Segun yo la libreria de accesibilidad emula la presion del boton enviar en whatsapp, por lo que si puedes abrir la imagen al destinatario con la libreria MEShare o con Whatsapp y la accesibilidad diera en enviar, el trabajo estaria hecho.
Muchas gracias a ambos por sus respuestas.
Edito: En el codigo del post # 2, abre un intento para enviar un whatsapp con una imagen (no lo he hecho funcionar, pero veo el codigo), el detalle es que hay que elegir incluso el destinatario.
La liberia whatsapp deja abrir un intento para enviar una imagen, pero igual abre el selector de contactos.
Lo que necesito es abrir el whatsapp con una imagen cargada y lista para enviar a un numero especifico. No la pienso subir al google play, asi que no creo tener problemas sobre violar los terminos al hacer un "robot" en potencia.
El codigo de accesibilidad ya lo he logrado entender, ahora solo me falta el intent que abra la imagen lista para ser enviada a un contacto en especifico.
Otro tips.
File Provider share file with text description
Hello, i have this code to share a file: Dim in As Intent in.Initialize(in.ACTION_SEND, "") in.SetType("text/plain") 'it is not related to the file itself. in.PutExtra("android.intent.extra.STREAM", Main.fun.CreateFileProviderUri(Starter.shared, "share.jpeg"))...www.b4x.com
Dim wha As Whatsapp
Dim nombre As String = "Imagen.jpg"
If File.exists(File.DirInternal, nombre) = False Then
File.Copy(File.DirAssets, nombre, File.DirInternal, nombre)
End If
Dim path As String = File.Combine(File.DirInternal, nombre)
wha.shareMediaWithContact(path, wha.IMAGE_TYPE)
'En esta ultima linea me dice que los tipos no coinciden'
Dim out As OutputStream
out = File.OpenOutput(File.DirRootExternal & "/dir/", "imagen.jpg", False)
b.WriteToStream(out, 100, "JPEG")
out.Close
Dim FileName As String = "imagen.jpg"
File.Copy(File.DirRootExternal & "/dir/", "imagen.jpg", Starter.Provider.SharedFolder, FileName)
Dim in As Intent
in.Initialize(in.ACTION_SEND, "")
in.SetType("image/jpg")
in.PutExtra("android.intent.extra.STREAM", Starter.Provider.GetFileUri(FileName))
in.Flags = 1 'FLAG_GRANT_READ_URI_PERMISSION
in.WrapAsIntentChooser("Select")
StartActivity(in)
Try
Dim Intent1 As Intent
Intent1.Initialize(Intent1.ACTION_SEND, $"https://api.whatsapp.com/send?phone=${"+595971848417"}&text=${"hola"}"$)
Intent1.SetComponent("com.whatsapp/.ContactPicker")
StartActivity(Intent1)
Catch
Log("Whatsapp not installed or they changed the activity name.")
End Try
Sub Activity_KeyPress (KeyCode As Int) As Boolean
If KeyCode = KeyCodes.KEYCODE_VOLUME_UP Then
Log("Up")
TurnOffAlarm
Return True
End If
If KeyCode = KeyCodes.KEYCODE_VOLUME_DOWN Then
Log("Down")
TurnOffAlarm
Return True
End If
End Sub
dim Map as B4XView = PnlMap
dim MapSnapShot as bitmap = Map.Snapshot
https://medium.com/@konbak19/use-mapview-inside-an-android-service-and-take-snapshot-of-your-route-on-the-background-1894f8dcb591
ok,
1. Tecla de volumen (no Intent)
B4X:Sub Activity_KeyPress (KeyCode As Int) As Boolean If KeyCode = KeyCodes.KEYCODE_VOLUME_UP Then Log("Up") TurnOffAlarm Return True End If If KeyCode = KeyCodes.KEYCODE_VOLUME_DOWN Then Log("Down") TurnOffAlarm Return True End If End Sub
2,- El numero de seguro o SOS esta en la lista de whatsapp
o bien es un parametro que el usuario define o ingresa ??
En la mayoria de las app se ingresa el numero telefonico por el usuario en los paranetros de la app.
3. enviar la ubicacion esta bien enviar lat y log con la opción de un snatshop de mapa, al igual que lo hace whatssap (no interactivo).
esto lo puedes hacer rescatando la imagen de un panel donde pusiste el mapa o a través de googlemap api ( entrega un imagen).
B4X:dim Map as B4XView = PnlMap dim MapSnapShot as bitmap = Map.Snapshot
Google Maps
Installation instructions: - Register your app in Google developer console: https://console.developers.google.com You need to enable Google Maps Android API. Then click on Credentials -> Create Credentials -> API Key -> Android Key. You should get a key that looks like...www.b4x.com
4. ya lo sabes de intent SEND post 6.
Action: Click
UI Element Class: android.widget.TextView
Ui Element Text: John Doe
UI Element ID: com.whatsapp:id/conversations_row_contact_name
Dim MsgMap As Map
MsgMap.Initialize
MsgMap.Put("msg",strMessage)
success = acs.PerformNodeActionOnViewWithArgs(True,"com.whatsapp:id/entry",AccServConstants.ACTION_SET_TEXT,MsgMap)
acs.delay(100)
success = acs.PerformNodeActionOnViewWithArgs(True, "com.whatsapp:id/send",AccServConstants.ACTION_CLICK, Null)
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?