2011-01-13 18 views
24

Tengo una vista de texto con Android: autoLink = "email".TextView para enviar un correo electrónico al hacer clic

Si pongo mi dirección de correo electrónico allí aparece un enlace que me permite hacer clic.

¿Cómo puedo hacer que aparezca un texto diferente (por ejemplo, "Enviar comentarios") en lugar de la dirección de correo electrónico, pero igual me comporto cuando hago clic?

Gracias

Respuesta

49

Para lograr lo que quería requiere un enfoque diferente:

TextView feedback = (TextView) findViewById(R.id.TextViewSendFeedback); 
feedback.setText(Html.fromHtml("<a href=\"mailto:[email protected]\">Send Feedback</a>")); 
feedback.setMovementMethod(LinkMovementMethod.getInstance()); 

Esto básicamente coloca HTML en el TextView por lo que obtener un enlace que dice 'Enviar comentario' pero al hacer clic se abre la aplicación de correo electrónico predeterminada.

Palabra de advertencia: Probar esto en el emulador inicialmente no funcionó para mí, diciendo que no era compatible. Esto fue solo porque no tenía una configuración de cuenta de correo electrónico. Configurar el emulador hizo que el trabajo funcionara como yo quería.

+1

Una cosa a tener en cuenta es que esto no funcionará si configuras el android: autoLink en "todo". Probablemente no funcione si configura Android: autoLink a cualquier cosa excepto "none", pero no lo he probado. –

+2

Si almacena la cadena en un recurso de cadena, debe reemplazar la escuadra angular izquierda con < – ErikAndren

1

Podría ser más fácil para crear un botón y dentro de su OnClickListener() Tire un correo electrónico de tal R.string.email.

+0

Esa es una muy buena sugerencia de que nunca había considerado! De hecho, puedo usar eso, a pesar de que he encontrado la solución. ¡Gracias! – neildeadman

28

Otra forma simple en diseño:

... 
<TextView 
     android:id="@+id/tvTelefone" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/sobre_telefone" 
     android:textColor="#000000" 
     android:autoLink="phone" /> 
...  

... 
<string name="sobre_telefone">Contato: (45) 9145-0000</string> 
} 

Lee más aquí: http://developer.android.com/reference/android/widget/TextView.html#attr_android:autoLink

+2

Esta es, de hecho, la mejor solución si solo necesita soporte básico para vincular la dirección de correo electrónico y el sitio web. Para aquellos confundidos con la respuesta, simplemente verifique el enlace de propiedad 'autoLink' provisto. – cprcrack

+0

autoLink = "correo electrónico" funcionó para mí ... gran respuesta –

25

Puede utilizar ambos enlaces y correo electrónico si se establece el siguiente parámetro en el TextView

android:autoLink="web|email" 

la los enlaces se abrirán en el navegador y los correos serán enviados por el cliente de correo predeterminado

+0

esto no es trabajo de mi parte –

0

Fro los hilos desde strings.xml:

<string name="your_string"><![CDATA[ contact us at <a href=\"mailto:[email protected]\">[email protected]</a> for more help.]]></string> 


tvObject.setText(Html.fromHtml(getString(R.string.your_string))); 
tvObject.setMovementMethod(LinkMovementMethod.getInstance()); 
Cuestiones relacionadas