2011-04-18 20 views
9

He creado un código que envía un correo electrónico html a una dirección determinada. El correo electrónico contiene un enlace como el siguiente:Cómo enviar un correo electrónico con un enlace para abrir la aplicación de Android

<a href="crystalcloud://android?4567">Click to validate account</a> 

Estaba probando esto enviándolo a mi cuenta de gmail. Por alguna razón, cuando recibo el correo electrónico, no me deja hacer clic en el enlace. Si pongo este enlace en una página web, mi aplicación comienza bien.

¿Hay algo especial que deba hacer para que este enlace se muestre en un correo electrónico, o gmail simplemente bloquea este tipo de enlaces? ¿Hay alguna forma de evitar este problema en gmail?

EDIT: Añadido fragmentos de mi código

código para enviar enlace:

MimeMessage message = new MimeMessage(session); 
    message.setFrom(new InternetAddress(from)); 
    message.addRecipient(Message.RecipientType.TO, new InternetAddress(emailAddress)); 
    message.setSubject("New Crystal Cloud User"); 
    message.setContent("Thank you for creating a new Crystal Cloud account!<br><a href=\"crystalcloud://android?4567">Click to validate account</a>", "text/html; charset=utf-8"); 
    Transport transport = session.getTransport("smtp"); 
    transport.connect(host, from, pass); 
    transport.sendMessage(message, message.getAllRecipients()); 
    transport.close(); 

código de Android para responder a la intención:

 <intent-filter> 
      <action android:name="android.intent.action.VIEW" /> 
      <category android:name="android.intent.category.BROWSABLE" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <data android:scheme="crystalcloud" /> 
     </intent-filter> 

Respuesta

15

Este es un problema con los clientes de correo electrónico de Android que no muestran enlaces como clicables a menos que sean http o https.

Mi solución fue usar un esquema http para abrir mi aplicación:

<data android:scheme="http" android:host="com.company.app" android:port="3513" /> 

Esto funciona, pero en molesto, ya que pide al usuario que abra la aplicación, ya sea en el navegador o en la aplicación. Otra solución es tener un enlace a un sitio web que luego realiza un redireccionamiento de JavaScript a su aplicación, aunque esto puede causar más problemas.

+0

Supongo que solo haré esto, y viviré con la molestia. –

0

En el encabezado del correo puso en Content-Type: text/html para indicar que el contenido está en HTML para indicar que el correo viene en formato HTML. Luego, el cliente de correo procesará el HTML de manera apropiada. También ayudará a encerrar el enlace en un bloque <html></html>.

+0

Ya lo hice. El html se envía correctamente, pero parece estar bloqueando este tipo de enlace. ¿Algunas ideas? –

+0

¿Solo está sucediendo en Gmail? ¿Has probado con otros clientes de correo? Si solo es con Gmail, podría tratarse de su filtro Phishing. – Rasika

0

Me enfrento al mismo problema, por fin tengo solución. Puede compartir el texto y el enlace

String link_val = "http://play.google.com/store/apps/details?id=" + MainActivity.this.getPackageName(); 
     String body = "<a href=\"" + link_val + "\">" + link_val + "</a>"; 
     String data = "Hello I am using this App.\nIt has large numbers of Words meaning with synonyms.\nIts works offline very smoothly.\n\n" + body; 
     sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, Html.fromHtml(data)); 
+0

¿funciona en Android 6 y más? He intentado algo similar, funciona para Android 4.3 pero no en 6 y 7: | –

+0

Funcionará, porque he usado el mismo código, puede intentarlo –

+0

Lo probé y no es así. Desde un S3mini recibo en mi correo electrónico los enlaces, desde un Nexus 5 con 6 y un LG G5 con 7, solo recibo texto, sin hipervínculos. He intentado con el tipo: "text/html" y "message/rfc822" Any ideea why? –

Cuestiones relacionadas