一个图书馆android项目的静态方法的Gmail

一个图书馆android项目的静态方法的Gmail,android,android-intent,methods,static,gmail,Android,Android Intent,Methods,Static,Gmail,我正在尝试开发一个库,以便在未来的项目中处理代码。 我用一种方法发送了一封电子邮件,证明它是有效的 老路(有效): public void onClick(View v) { // Hay que hacer un "try" porque si no se ha puesto nada el alguno de los EditText daría un error y se cerraría la app. try { // Recogemos lo inse

我正在尝试开发一个库,以便在未来的项目中处理代码。 我用一种方法发送了一封电子邮件,证明它是有效的

老路(有效):

public void onClick(View v) {
    // Hay que hacer un "try" porque si no se ha puesto nada el alguno de los EditText daría un error y se cerraría la app.
    try {
        // Recogemos lo insertado en los campos de texto:
        AD.NAME_LIST = editTextNameList.getText().toString();
        AD.SURNAME_LIST = editTextSurnameList.getText().toString();

        System.out.println("AD.NAME_LIST: "+AD.NAME_LIST);
        System.out.println("AD.SURNAME_LIST: "+AD.SURNAME_LIST);

        dialog.cancel(); // Primero de nada cerramos la ventana de diálogo

        Intent gmailIntent = new Intent();
        gmailIntent.setClassName("com.google.android.gm", "com.google.android.gm.ComposeActivityGmail"); // Usamos directamente gmail
        gmailIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{AD.EMAIL}); // Dirección de correo electrónico
        gmailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, AD.EMAIL_SUBJECT); // Asunto
        gmailIntent.putExtra(android.content.Intent.EXTRA_TEXT, AD.SURNAME_LIST+" "+AD.NAME_LIST);  // Cuerpo del e-mail

        try {
            startActivity(gmailIntent);
            Toast.makeText(getApplicationContext(), "El e-mail se ha generado correctamente.\n\nSimplemente DALE A ENVIAR.\n\nRecibirás un correo electrónico de confirmación.", Toast.LENGTH_LONG).show();
        } catch(ActivityNotFoundException ex) {
            Toast.makeText(getApplicationContext(), "El cliente de correo electrónico gmail no está disponible.", Toast.LENGTH_SHORT).show();
            ex.printStackTrace();
        }

    } catch (Exception e) {
        Toast.makeText(getApplicationContext(), "No ha rellenado correctamente alguno de los campos.\n\nInténtelo de nuevo.", Toast.LENGTH_LONG).show();
        doorListBtn(v); // Sacamos de nuevo la ventana de diálogo
    }
}
public void onClick(View v) {
    // Recogemos lo insertado en los campos de texto:
    AD.names_list[0] = editTextNameList.getText().toString();
    AD.surnames_list[0] = editTextSurnameList.getText().toString();

    System.out.println("Nombre: "+AD.names_list[0]);
    System.out.println("Apellidos: "+AD.surnames_list[0]);

    dialog.cancel(); // Primero de nada cerramos la ventana de diálogo

    // Hay que hacer un "try" porque si no se ha puesto nada en alguno de los EditText daría un error y se cerraría la app:
    try {
        G_A.sendEmailWithNames(getApplicationContext(), AD.EMAIL, AD.EMAIL_SUBJECT, AD.names_list, AD.surnames_list);
    } catch (Exception e) {
        G_A.showToast(
                getApplicationContext(),
                "No ha rellenado correctamente alguno de los campos.\n\nInténtelo de nuevo.",
                Toast.LENGTH_LONG);

        doorListBtn(v); // Sacamos de nuevo la ventana de diálogo
    }
}
现在我已经做到了:

public void onClick(View v) {
    // Hay que hacer un "try" porque si no se ha puesto nada el alguno de los EditText daría un error y se cerraría la app.
    try {
        // Recogemos lo insertado en los campos de texto:
        AD.NAME_LIST = editTextNameList.getText().toString();
        AD.SURNAME_LIST = editTextSurnameList.getText().toString();

        System.out.println("AD.NAME_LIST: "+AD.NAME_LIST);
        System.out.println("AD.SURNAME_LIST: "+AD.SURNAME_LIST);

        dialog.cancel(); // Primero de nada cerramos la ventana de diálogo

        Intent gmailIntent = new Intent();
        gmailIntent.setClassName("com.google.android.gm", "com.google.android.gm.ComposeActivityGmail"); // Usamos directamente gmail
        gmailIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{AD.EMAIL}); // Dirección de correo electrónico
        gmailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, AD.EMAIL_SUBJECT); // Asunto
        gmailIntent.putExtra(android.content.Intent.EXTRA_TEXT, AD.SURNAME_LIST+" "+AD.NAME_LIST);  // Cuerpo del e-mail

        try {
            startActivity(gmailIntent);
            Toast.makeText(getApplicationContext(), "El e-mail se ha generado correctamente.\n\nSimplemente DALE A ENVIAR.\n\nRecibirás un correo electrónico de confirmación.", Toast.LENGTH_LONG).show();
        } catch(ActivityNotFoundException ex) {
            Toast.makeText(getApplicationContext(), "El cliente de correo electrónico gmail no está disponible.", Toast.LENGTH_SHORT).show();
            ex.printStackTrace();
        }

    } catch (Exception e) {
        Toast.makeText(getApplicationContext(), "No ha rellenado correctamente alguno de los campos.\n\nInténtelo de nuevo.", Toast.LENGTH_LONG).show();
        doorListBtn(v); // Sacamos de nuevo la ventana de diálogo
    }
}
public void onClick(View v) {
    // Recogemos lo insertado en los campos de texto:
    AD.names_list[0] = editTextNameList.getText().toString();
    AD.surnames_list[0] = editTextSurnameList.getText().toString();

    System.out.println("Nombre: "+AD.names_list[0]);
    System.out.println("Apellidos: "+AD.surnames_list[0]);

    dialog.cancel(); // Primero de nada cerramos la ventana de diálogo

    // Hay que hacer un "try" porque si no se ha puesto nada en alguno de los EditText daría un error y se cerraría la app:
    try {
        G_A.sendEmailWithNames(getApplicationContext(), AD.EMAIL, AD.EMAIL_SUBJECT, AD.names_list, AD.surnames_list);
    } catch (Exception e) {
        G_A.showToast(
                getApplicationContext(),
                "No ha rellenado correctamente alguno de los campos.\n\nInténtelo de nuevo.",
                Toast.LENGTH_LONG);

        doorListBtn(v); // Sacamos de nuevo la ventana de diálogo
    }
}
G_A是一个android项目库。它有以下方法:

/**
 * Envía un e-mail con los nombres y apellidos de la gente que ha sido apuntada.
 * Las casillas de 'names' y 'surnames' se corresponden.
 * @param context
 * @param names Nombres.
 * @param surnames Apellidos.
 */
public static void sendEmailWithNames(Context context, String email, String emailSubject, String[] names, String[] surnames) {
    Intent gmailIntent = new Intent();
    gmailIntent.setClassName("com.google.android.gm", "com.google.android.gm.ComposeActivityGmail"); // Usamos directamente gmail
    gmailIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{email}); // Dirección de correo electrónico
    gmailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, emailSubject); // Asunto
    gmailIntent.putExtra(android.content.Intent.EXTRA_TEXT, names[0]+" "+surnames[0]);  // Cuerpo del e-mail

    System.out.println("email: "+email);
    System.out.println("emailSubject: "+emailSubject);
    System.out.println("names[0]: "+names[0]);
    System.out.println("surnames[0]: "+surnames[0]);

    try {
        context.startActivity(gmailIntent); // Hacemos el intento dentro del contexto de la actividad desde donde se ha llamado
        G_A.showToast(context, "El e-mail se ha generado correctamente.\n\nSimplemente DALE A ENVIAR.\n\nRecibirás un correo electrónico de confirmación.", Toast.LENGTH_LONG);
    } catch(ActivityNotFoundException ex) {
        G_A.showToast(context, "El cliente de correo electrónico gmail no está disponible.", Toast.LENGTH_SHORT);
        ex.printStackTrace();
    }
} // sendEmailWithNames()

/**
 * Muestra un Toast.
 * @param context
 * @param message Mensaje a mostrar.
 * @param duration Tiempo que el mensaje es mostrado por pantalla.
 */
public static void showToast(Context context, String message, int duration) {
    Toast.makeText(context, message, duration).show();
} // showToast()
showToast有效,但另一个失败。我认为错误就在我称之为startActivity时:

context.startActivity(gmailIntent); // Hacemos el intento dentro del contexto de la actividad desde donde se ha llamado
但是我看不到logcat的错误或者我做错了什么。。。我不知道。
PS:G_UA类G_uUA项目不是活动。

好,我通过以下方式解决了问题:

G_A methodsendmailWithNames()返回意向

/**
 * Envía un e-mail con los nombres y apellidos de la gente que ha sido apuntada.
 * Las casillas de 'names' y 'surnames' se corresponden.
 * @param context
 * @param names Nombres.
 * @param surnames Apellidos.
 */
public static Intent sendEmailWithNames(Context context, String email, String emailSubject, String[] names, String[] surnames) {
    Intent gmailIntent = new Intent();
    gmailIntent.setClassName("com.google.android.gm", "com.google.android.gm.ComposeActivityGmail"); // Usamos directamente gmail
    gmailIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{email}); // Dirección de correo electrónico
    gmailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, emailSubject); // Asunto
    gmailIntent.putExtra(android.content.Intent.EXTRA_TEXT, names[0]+" "+surnames[0]);  // Cuerpo del e-mail

    System.out.println("email: "+email);
    System.out.println("emailSubject: "+emailSubject);
    System.out.println("names[0]: "+names[0]);
    System.out.println("surnames[0]: "+surnames[0]);

    try {
        G_A.showToast(context, "El e-mail se ha generado correctamente.\n\nSimplemente DALE A ENVIAR.\n\nRecibirás un correo electrónico de confirmación.", Toast.LENGTH_LONG);
    } catch(ActivityNotFoundException ex) {
        G_A.showToast(context, "El cliente de correo electrónico gmail no está disponible.", Toast.LENGTH_SHORT);
        ex.printStackTrace();
    }

    return gmailIntent;
} // sendEmailWithNames()
当我从另一个项目调用此方法时,我会执行以下操作:

Intent intent = G_A.sendEmailWithNames(context, AD.EMAIL, AD.EMAIL_SUBJECT, AD.names_list, AD.surnames_list);
startActivity(intent);

我在运行应用程序的项目中添加了一个库G_项目。当我调用startActivity(Gmailinent)时,肯定会失败。它与语境有关。但我还没发现。。。