0
電子メール送信機能を備えたアプリケーションで作業しています。電子メール受信者アドレスリストは、データベースのSQLiteクエリからのものです。どうやら、私は電子メール機能を働かせるためにバックグラウンドでデータベースクエリを実行しなければなりません(下記の私のコードを見てください)。しかし、電子メールリストを含むクエリの出力を取得し、「TO」受信者フィールドにロードする方法はわかりません。 Email 'TO'フィールドは文字列配列リストでなければなりません。現在のコードは機能していません。誰かが私にこれを助けることができますか?多分私の問題を解決する他の方法があります。私はAndroidとJavaの新機能です。どうもありがとう!バックグラウンドスレッドでsqliteクエリを実行して、TOフィールドとしてクエリの出力をUIに送信することは可能ですか?
私のアクティビティコード現在地:
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;
}
}
}
あなたのアプリの異なるクラス間で電子メールを送信したいですか? – Eenvincible
どこから始めるのか分かりません...あなたのデータベースの回答を取得したときにコールバックを使用して、onClickでクエリを開始する必要があります。そのコールバックは電子メールの意図を開始します。 – MPelletier
私の質問に答えてくれてありがとう、Eenvincible。いいえ、メールを送りません。電子メールアドレスリストは、databasehelperによって処理されるデータベースからのデータを照会することによって生成されます。 –