2012-03-14 24 views
7

Estoy tratando de abrir el formulario de envío de correo electrónico de Gmail directamente al hacer clic en el botón, pero esto siempre muestra una lista de opciones para enviar correos electrónicos.Enviando correo electrónico usando GMail en android

Estoy haciendo esto para la apertura de forma GMail:

  Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 
      String[] recipients = new String[]{"" , "" ,}; 
      emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, recipients); 
      emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "This is my text"); 
      emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, ""); 
      emailIntent.setType("message/rfc822"); 
      startActivity(Intent.createChooser(emailIntent, "Send Email")); 

pero esto no se está abriendo forma de Gmail. ¿Qué puedo hacer para abrir el formulario de GMail por favor ayuda.

¿Hay alguna manera de hacer esto?

+1

La razón por la que está viendo una lista de opciones es porque está utilizando 'Intent.createChooser (...)'. En su caso, esto siempre creará una lista de aplicaciones que pueden manejar 'ACTION_SEND' para el' mime-type 'message/rfc822'. No hay forma de decirle explícitamente que use GMail. Podría intentarlo sin 'createChooser (...)' y, (si tiene suerte) el usuario puede haber configurado GMail como su aplicación de correo predeterminada. SI tienes suerte, eso es. Si establecen su valor predeterminado para otra aplicación de correo, usará eso en su lugar. No estoy seguro de que sea posible hacer lo que quieras. Ciertamente no con 'createChooser (...)'. – Squonk

Respuesta

16

uso algo en las líneas

public void sendGmail(Activity activity, String subject, String text) { 
    Intent gmailIntent = new Intent(); 
    gmailIntent.setClassName("com.google.android.gm", "com.google.android.gm.ComposeActivityGmail"); 
    gmailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject); 
    gmailIntent.putExtra(android.content.Intent.EXTRA_TEXT, text); 
    try { 
     activity.startActivity(gmailIntent); 
    } catch(ActivityNotFoundException ex) { 
     // handle error 
    } 
} 
+0

da 'excepción de puntero nulo' en esta línea' activity.startActivity (gmailIntent); ' – Pari

+0

asegúrese de estar pasando el objeto de actividad actual, también puede agregar este método dentro de su clase de actividad y llamar a startActivity (gmailIntent); directamente – mkso

+0

gracias ahora esto funciona bien. Estoy pasando 'getParent()' antes y esto fue bloquear mi aplicación. – Pari

Cuestiones relacionadas