草稿信息增删改查处理

得到mMessages之后,先判断有没有草稿信息,有的话,从列表中删除草稿信息,将草稿信息保存在另外一个变量中。

@Override
protected void onPostExecute(List<TxrjMessage> result) {
    super.onPostExecute(result);
    mMessages = result;
    for(TxrjMessage msg : mMessages) {
        if(msg.getType() == Sms.MESSAGE_TYPE_DRAFT) {
            mEditMsg.setText(msg.getBody()); // 将草稿信息内容显示在文本框中。
            draftMsg = msg; // 将草稿信息保存在另外一个变量中。
            mMessages.remove(msg); // 将草稿信息从信息列表中删除。

            break;
        }
    }
    mListAdapter = new MessageListAdapter(mContext, mMessages);
    mListView.setAdapter(mListAdapter);
    if(TxrjConstant.ACTION_SEND_MESSAGE.equals(getIntent().getAction())) {
        performSendMessage(getIntent().getStringExtra(TxrjConstant.EXTRA_MESSAGE_BODY));
    }
    mProgressDialog.dismiss();
}
在信息列表界面中,点击返回键时,保存(修改,删除)草稿信息。

private void removeDraftMessage() {
    if(draftMsg == null) {
        return;
    }
    getContentResolver().delete(Sms.CONTENT_URI,
            "_id=" + draftMsg.getMessageId(), null); // 删除指定sms._id草稿信息。

    draftMsg = null;
}

private void updateDraftMessage() {
    String body = mEditMsg.getText().toString();
    if(body.equals(draftMsg.getBody())) {
        return;
    }
    ContentValues values = new ContentValues();
    values.put(Sms.DATE, System.currentTimeMillis());
    values.put(Sms.BODY, body);
    getContentResolver().update(Sms.CONTENT_URI, values,
            "_id=" + draftMsg.getMessageId(), null); // 更新指定sms._id的草稿信息。
}

private void saveDraftMessage() {
    String body = mEditMsg.getText().toString();
    ContentValues values = new ContentValues();
    values.put(Sms.TYPE, Sms.MESSAGE_TYPE_DRAFT);
    values.put(Sms.THREAD_ID, mThreadId);
    values.put(Sms.DATE, System.currentTimeMillis());
    values.put(Sms.BODY, body);
    getContentResolver().insert(Sms.CONTENT_URI, values); // 插入一个新的草稿信息。

}

当编辑框文本内容不为空时,更新当前草稿信息,或者插入一个新的草稿信息。

编辑框文本内容为空时,删除当前草稿信息(如果当前会话存在草稿信息)。

@Override
public void onBackPressed() {
    if(!TextUtils.isEmpty(mEditMsg.getText().toString())){
        if(draftMsg != null) {
            updateDraftMessage();
        } else {
            saveDraftMessage();
        }
    } else {
        removeDraftMessage();
    }
    super.onBackPressed();
}

需要注意的是:会话列表中的message_count不包括草稿信息。

如果该会话只有草稿信息,没有别的信息,那么message_count值为零。

原文地址:https://www.cnblogs.com/fengzhblog/p/3196094.html