Я пытаюсь разработать библиотеку для подбора кода в будущих проектах. Я сделал способ отправить электронное письмо, в котором он работал.gmailIntent от статического метода библиотеки проекта android
Старые пути (работы):
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 является андроидом проект библиотеки. Он имеет следующие методы:
/**
* 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_A проекта G_A не является активностью.
Я добавил в G_A проект библиотеки проекта, где я запустить приложение. –
Неудача, когда я вызываю startActivity (gmailIntent). Это связано с контекстом. Но я пока этого не знаю ... –