Spanish B4A - Migración a v 10.2 - Envío de eMails

fchirico

Member
Estimados,

Antiguamente tenía instalada la v 9.9 de B4A , migré a la v 10.2 y probé mi aplicación en el celular y todo funciona igual, es decir bien.

Ahora desde que migré de versión, en el Emulador (Genymotion) se comporta de forma diferente, cuando mi aplicación quiere enviar un correo en vez de llamar al cliente de correos está llamando a una aplicación que se llama "Amaze" (adjunto imagen).

Cual será el problema?

Para enviar el correo desde mi aplicación utilizo la calse FileProvider:

B4X:
Sub Class_Globals
    Public SharedFolder As String
    Public UseFileProvider As Boolean
    Private rp As RuntimePermissions
End Sub

Public Sub Initialize
    Dim p As Phone
    If p.SdkVersion >= 24 Or File.ExternalWritable = False Then
        UseFileProvider = True
        SharedFolder = File.Combine(File.DirInternal, "shared")
        File.MakeDir("", SharedFolder)
    Else
        UseFileProvider = False
        SharedFolder = rp.GetSafeDirDefaultExternal("shared")
    End If
    Log("Version SDK:  " & p.SdkVersion)
    Log($"Using FileProvider? ${UseFileProvider}"$)
End Sub

'Returns the file uri.
Public Sub GetFileUri (FileName As String) As Object
    
    If UseFileProvider = False Then
        Dim uri As JavaObject
        Return uri.InitializeStatic("android.net.Uri").RunMethod("parse", Array("file://" & File.Combine(SharedFolder, FileName)))
    Else
        Dim f As JavaObject
        f.InitializeNewInstance("java.io.File", Array(SharedFolder, FileName))
        Dim fp As JavaObject
        Dim context As JavaObject
        context.InitializeContext
        fp.InitializeStatic("android.support.v4.content.FileProvider")
        Return fp.RunMethod("getUriForFile", Array(context, Application.PackageName & ".provider", f))
    End If
End Sub

'Replaces the intent Data field with the file uri.
'Resets the type field. Make sure to call Intent.SetType after calling this method
Public Sub SetFileUriAsIntentData (Intent As Intent, FileName As String)
    Dim jo As JavaObject = Intent
    jo.RunMethod("setData", Array(GetFileUri(FileName)))
    Intent.Flags = Bit.Or(Intent.Flags, 1) 'FLAG_GRANT_READ_URI_PERMISSION
End Sub
 

Attachments

  • Amaze.JPG
    Amaze.JPG
    58.4 KB · Views: 143

josejad

Expert
Licensed User
Longtime User
No tengo mucha idea de esto, pero como el programa que se abre si no me equivoco es un explorador de archivos... ¿estás intentando enviar un adjunto?
¿Has comprobado que el adjunto existe y tienes acceso a la carpeta?
Cuando has instalado 10.2, has actualizado también el SDK siguiendo las instrucciones de instalación?

saludos,
 

fchirico

Member
No tengo mucha idea de esto, pero como el programa que se abre si no me equivoco es un explorador de archivos... ¿estás intentando enviar un adjunto?
¿Has comprobado que el adjunto existe y tienes acceso a la carpeta?
Cuando has instalado 10.2, has actualizado también el SDK siguiendo las instrucciones de instalación?

saludos,

Hola,

No estoy intentando enviar un adjunto.
He actualizado el SDK a la v API 30.

Como comentaba, lo extraño es que desde el celular funciona bien, es solo en el emulador que no funciona.

Gracias por la ayuda.
 

fchirico

Member
Puedes revisar si tienes registrada alguna cuenta de correo en el emulador.

Sí tengo, de hecho antes en la v 9.9 funcionaba, solo actualicé la versión y el SDK en mi pc, volví a compilar el proyecto y en el celular funciona y en el emulador no.

Gracias.
 
Top