Ich arbeite an einer App mit E-Mail senden Funktion arbeiten. Die Adressliste der E-Mail-Empfänger stammt aus einer SQLite-Abfrage aus einer Datenbank. Anscheinend muss ich Datenbankabfrage im Hintergrund laufen lassen, um die E-Mail-Funktion arbeiten zu lassen (siehe meinen Code unten). Ich weiß jedoch nicht, wie ich die Ausgabe meiner Abfrage, die eine E-Mail-Liste enthält, abrufen kann, und lade auf ein 'TO' Empfängerfeld. Das E-Mail-Feld "TO" sollte eine String-Array-Liste sein. Der aktuelle Code funktioniert nicht. Könnte mir jemand dabei helfen? Vielleicht gibt es andere Möglichkeiten, mein Problem zu lösen. Ich bin sehr neu in Android und Java. Danke vielmals!Ist es möglich, sqlite Abfrage im Hintergrund Thread und Senden einer E-Mail auf der Benutzeroberfläche mit der Ausgabe der Abfrage als TO-Feld
meine Tätigkeit Codes sind hier:
package jhapps.com.demographics;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import java.io.Serializable;
public class PromotionEmailMonthTop10 extends Activity {
private EditText subjectGroupTop10,bodyGroupTop10;
private Button btnMonthTop10;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_promotion_email_month_top10);
subjectGroupTop10=(EditText)findViewById(R.id.subjectMonthTop10);
bodyGroupTop10=(EditText)findViewById(R.id.bodyMonthTop10);
btnMonthTop10=(Button)findViewById(R.id.btnMonthTop10);
btnMonthTop10.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EmailMonthTop10();
// after sending the email, clear the fields
subjectGroupTop10.setText("");
bodyGroupTop10.setText("");
}
});
}
//get month top 10 email list
protected void EmailMonthTop10() {
/** DataBaseHelper dataBaseHelper=new DataBaseHelper(this);
String[] emailGroupTop10=new String[dataBaseHelper.eMailListMonthTop10().size()];
for(int i=0;i<dataBaseHelper.eMailListMonthTop10().size();i++){
emailGroupTop10[i]=dataBaseHelper.eMailListMonthTop10().get(i);
}
*/
new SendEmailTop10Task().execute();
String subjects=subjectGroupTop10.getText().toString();
String bodytext=bodyGroupTop10.getText().toString();
//start email intent
Intent email = new Intent(Intent.ACTION_SENDTO);
// prompts email clients only
email.setType("message/rfc822");
email.setData(Uri.parse("mailto:"));
email.putExtra(Intent.EXTRA_EMAIL, new SendEmailTop10Task().execute());
// email.putExtra(Intent.EXTRA_EMAIL,new String []{"[email protected]","[email protected]"});
email.putExtra(Intent.EXTRA_SUBJECT, subjects);
email.putExtra(Intent.EXTRA_TEXT, bodytext);
try {
// the user can choose the email client
startActivity(Intent.createChooser(email, "Choose an email client from..."));
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(PromotionEmailMonthTop10.this, "No email client installed.",
Toast.LENGTH_LONG).show();
}
}
class SendEmailTop10Task extends AsyncTask<Void, Void, Void> {
// This is called on a seperate thread
@Override
protected Void doInBackground(Void... Voids) {
DataBaseHelper dataBaseHelper=new DataBaseHelper(PromotionEmailMonthTop10.this);
String[] emailGroupTop10=new String[dataBaseHelper.eMailListMonthTop10().size()];
for(int i=0;i<dataBaseHelper.eMailListMonthTop10().size();i++){
emailGroupTop10[i]=dataBaseHelper.eMailListMonthTop10().get(i);
}
return null;
}
}
}
Sie möchten eine E-Mail zwischen verschiedenen Klassen Ihrer App senden? – Eenvincible
Ich bin nicht sicher, wo ich anfangen soll ... Die Idee ist, dass Sie Ihre Abfrage auf Ihrem onClick starten sollten, mit einem Rückruf für, wenn Sie Ihre Datenbank-Antwort bekommen. Dieser Rückruf startet die E-Mail-Absicht. – MPelletier
Vielen Dank für die Beantwortung meiner Frage, Eenvincible. Nein, E-Mail senden. Die E-Mail-Adressliste wird durch Abfragen von Daten aus der Datenbank generiert, die von DatabaseHelper verarbeitet werden. –