私はAndroid、そして一般的なプログラミングの新機能です。私はK9電子メールクライアントを使って電子メール受信者を持っています。私は電子メールをチェックして、適切な書式設定と電子メールの内容を取得し、電話でSQLiteデータベースに入力します。受信機は正常に動作しています。問題は、適切にフォーマットされたメッセージを送信すると、最初の電子メールから2レコードが作成されることです。最初のメッセージを削除せずに別のメッセージを送信すると、2番目のメッセージを4つのレコードにします。 3番目のレコードは6個のレコードを作成します。私は、おそらく私が行方不明であることを明らかにしていますが、問題を見つけることはできません。受信したすべてのメールに対して2つのSQLiteレコードを取得する
public class EmailReceiver extends BroadcastReceiver{
private JobsData jobs;
public static final Uri k9uri = Uri.parse("content://com.fsck.k9.messageprovider/inbox_messages/");
static String[] messages_projection = new String[] {"subject", "preview", "unread"};
@Override
public void onReceive(Context context, Intent intent) {
try {
Context mContext = context;
Cursor curSt = mContext.getContentResolver().query(k9uri, messages_projection, "unread='true'", null, null);
curSt.moveToFirst();
String preview = null;
String subject = null;
jobs = new JobsData(context);
int i = 0;
while (!curSt.isAfterLast()) {
subject = curSt.getString(0);
boolean test = subject.startsWith("JOB# ");
if (test) {
boolean check = true;
try {
for (int k = 5; k < subject.length(); k++) {
if (!Character.isDigit(subject.charAt(k))) {
check = false;
break;
}
}
} catch (Exception e) {
} finally {
}
if (check) {
preview = curSt.getString(1);
compareDb(subject.substring(7), preview, context);
}
}
curSt.moveToNext();
}
curSt.close();
} catch (Exception e) {
Toast toast = Toast.makeText(context, e.toString(), Toast.LENGTH_LONG);
toast.show();
}
if (emails != null) {
}
}
private void compareDb (String jobNo, String preview, Context context) {
try {
String[] dbJobs = new String[] {"JobNo"};
SQLiteDatabase db = jobs.getReadableDatabase();
Cursor dbCur = db.query(tableName, dbJobs, null, null, null, null, null);
dbCur.moveToFirst();
while (!dbCur.isAfterLast()) {
if (!jobNo.equals(dbCur.getString(0))) {
jobExtractor(preview, jobNo, context);
}
dbCur.moveToNext();
}
dbCur.close();
} catch (Exception e){
Toast toast = Toast.makeText(context, e.toString(), Toast.LENGTH_LONG);
toast.show();
}
}
private void addJobs(Job job){
SQLiteDatabase db = jobs.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(custName, job.getCustName());
values.put(jobNumber, job.getJobNumber());
values.put(jobType, job.getJobType());
values.put(address, job.getAddress());
values.put(zip, job.getZip());
values.put(contact, job.getContact());
values.put(contactNumber, job.getContactNumber());
values.put(problem, job.getProblem());
db.insertOrThrow(tableName, null, values);
db.close();
}
「jobextractor」方法はので、私はそれが含まれていませんでした正常に動作します:ここで
コードがあります。誰かが私を助けてくれたら、私はそれを感謝します。
ありがとうございました
ただのメモです。私はまた、未読の電子メールだけを見たいと思っていますが、それもうまくいきません。現時点では大きな問題ではありませんが、それに対する答えがあれば、私はとても感謝しています。