private void loadDraft() {
Log.i(TAG, "loadDraft() start:");
if (mWorkingMessage.isWorthSaving()) {
Log.w(TAG, "loadDraft() called with non-empty working message");
return;
} /// M: add for load IP message draft.@{
if (IpMessageUtils.getIpMessagePlugin(this).isActualPlugin()) {
if (mIpMessageDraft != null) {
Log.w(TAG, "loadDraft() called with non-empty IP message draft");
return;
} else if (loadIpMessagDraft()) {
return;
}
}
/// @} if (Log.isLoggable(LogTag.APP, Log.VERBOSE)) {
log("loadDraft() call WorkingMessage.loadDraft");
} /// M:[Just Comment] 4.1 Code. There may be a bug.
mWorkingMessage = WorkingMessage.loadDraft(this, mConversation,
new Runnable() {
@Override
public void run() {
drawTopPanel(false);
drawBottomPanel();
updateSendButtonState();
}
});
// if (mConversation != null && mConversation.getRecipients() != null
// && mConversation.getRecipients().size() > 20) {
// MmsLog.d(TAG, "register mDraftChangeObserver");
// mContentResolver.registerContentObserver(
// Mms.CONTENT_URI, true, mDraftChangeObserver);
// }
} private void saveDraft(boolean isStopping) {
Log.i(TAG, "saveDraft() start:");
if (Log.isLoggable(LogTag.APP, Log.VERBOSE)) {
LogTag.debug("saveDraft");
}
/// M: add for save IP message draft.@{
if (IpMessageUtils.getIpMessagePlugin(this).isActualPlugin() && isFinishing()) {
if (mIpMessageDraft != null) {
saveIpMessageDraft();
return;
}
if (mIpMessageDraftId > 0) {
IpMessageUtils.deleteIpMessageDraft(this, mConversation, mWorkingMessage);
}
}
/// @}
// TODO: Do something better here. Maybe make discard() legal
// to call twice and make isEmpty() return true if discarded
// so it is caught in the clause above this one?
if (mWorkingMessage.isDiscarded()) {
return;
} if (!mWaitingForSubActivity &&
(!mWorkingMessage.isWorthSaving() && mIpMessageDraft == null) &&
(!isRecipientsEditorVisible() || recipientCount() == 0)) {
if (LogTag.VERBOSE || Log.isLoggable(LogTag.APP, Log.VERBOSE)) {
log("not worth saving, discard WorkingMessage and bail");
}
mWorkingMessage.discard(false);
return;
}
/// M : Fix CR: ALPS00996195
/// group message, more than one recipients, no need to saveDraft,
/// is going to MultiDeleteActivity, just return. if contains draft, discard it @{
if (mIsStartMultiDeleteActivity) {
if (MmsPreferenceActivity.getIsGroupMmsEnabled(this) && !needSaveDraft()
&& mConversation.getRecipients().size() > 1) {
Log.d("[Mms][Draft][ComposeMessageActivity]", "[saveDraft] group message & "
+ " no need save drat & mIsStartMultiDeleteActivity true, then just return!");
if (mConversation.hasDraft()) {
Log.d("[Mms][Draft][ComposeMessageActivity]", "[saveDraft] mConversation has draft, then delete it");
mWorkingMessage.discard(false);
}
return;
}
/// M Fix CR ALPS01201355, which will save draft the contact contains email address.
/// when start multideleteactivity. if contains mms draft ,discard it @{
if (getRecipients().containsEmail() && !needSaveDraft()) {
Log.d("[Mms][Draft][ComposeMessageActivity]", "[saveDraft] contains email address"
+ ",no need to save draft, just return!!");
if (mConversation.hasDraft()) {
Log.d("[Mms][Draft][ComposeMessageActivity]", "[saveDraft] mConversation has draft, then delete it");
mWorkingMessage.discard(false);
}
return;
}
/// @}
}
/// @} Log.d("[Mms][Draft][ComposeMessageActivity]", "[saveDraft] call workingmessage.saveDraft");
mWorkingMessage.saveDraft(isStopping); if (mToastForDraftSave && MmsConfig.isSmsEnabled(this)) {
Toast.makeText(this, R.string.message_saved_as_draft,
Toast.LENGTH_SHORT).show();
}
}
Log.i(TAG, "loadDraft() start:");
if (mWorkingMessage.isWorthSaving()) {
Log.w(TAG, "loadDraft() called with non-empty working message");
return;
} /// M: add for load IP message draft.@{
if (IpMessageUtils.getIpMessagePlugin(this).isActualPlugin()) {
if (mIpMessageDraft != null) {
Log.w(TAG, "loadDraft() called with non-empty IP message draft");
return;
} else if (loadIpMessagDraft()) {
return;
}
}
/// @} if (Log.isLoggable(LogTag.APP, Log.VERBOSE)) {
log("loadDraft() call WorkingMessage.loadDraft");
} /// M:[Just Comment] 4.1 Code. There may be a bug.
mWorkingMessage = WorkingMessage.loadDraft(this, mConversation,
new Runnable() {
@Override
public void run() {
drawTopPanel(false);
drawBottomPanel();
updateSendButtonState();
}
});
// if (mConversation != null && mConversation.getRecipients() != null
// && mConversation.getRecipients().size() > 20) {
// MmsLog.d(TAG, "register mDraftChangeObserver");
// mContentResolver.registerContentObserver(
// Mms.CONTENT_URI, true, mDraftChangeObserver);
// }
} private void saveDraft(boolean isStopping) {
Log.i(TAG, "saveDraft() start:");
if (Log.isLoggable(LogTag.APP, Log.VERBOSE)) {
LogTag.debug("saveDraft");
}
/// M: add for save IP message draft.@{
if (IpMessageUtils.getIpMessagePlugin(this).isActualPlugin() && isFinishing()) {
if (mIpMessageDraft != null) {
saveIpMessageDraft();
return;
}
if (mIpMessageDraftId > 0) {
IpMessageUtils.deleteIpMessageDraft(this, mConversation, mWorkingMessage);
}
}
/// @}
// TODO: Do something better here. Maybe make discard() legal
// to call twice and make isEmpty() return true if discarded
// so it is caught in the clause above this one?
if (mWorkingMessage.isDiscarded()) {
return;
} if (!mWaitingForSubActivity &&
(!mWorkingMessage.isWorthSaving() && mIpMessageDraft == null) &&
(!isRecipientsEditorVisible() || recipientCount() == 0)) {
if (LogTag.VERBOSE || Log.isLoggable(LogTag.APP, Log.VERBOSE)) {
log("not worth saving, discard WorkingMessage and bail");
}
mWorkingMessage.discard(false);
return;
}
/// M : Fix CR: ALPS00996195
/// group message, more than one recipients, no need to saveDraft,
/// is going to MultiDeleteActivity, just return. if contains draft, discard it @{
if (mIsStartMultiDeleteActivity) {
if (MmsPreferenceActivity.getIsGroupMmsEnabled(this) && !needSaveDraft()
&& mConversation.getRecipients().size() > 1) {
Log.d("[Mms][Draft][ComposeMessageActivity]", "[saveDraft] group message & "
+ " no need save drat & mIsStartMultiDeleteActivity true, then just return!");
if (mConversation.hasDraft()) {
Log.d("[Mms][Draft][ComposeMessageActivity]", "[saveDraft] mConversation has draft, then delete it");
mWorkingMessage.discard(false);
}
return;
}
/// M Fix CR ALPS01201355, which will save draft the contact contains email address.
/// when start multideleteactivity. if contains mms draft ,discard it @{
if (getRecipients().containsEmail() && !needSaveDraft()) {
Log.d("[Mms][Draft][ComposeMessageActivity]", "[saveDraft] contains email address"
+ ",no need to save draft, just return!!");
if (mConversation.hasDraft()) {
Log.d("[Mms][Draft][ComposeMessageActivity]", "[saveDraft] mConversation has draft, then delete it");
mWorkingMessage.discard(false);
}
return;
}
/// @}
}
/// @} Log.d("[Mms][Draft][ComposeMessageActivity]", "[saveDraft] call workingmessage.saveDraft");
mWorkingMessage.saveDraft(isStopping); if (mToastForDraftSave && MmsConfig.isSmsEnabled(this)) {
Toast.makeText(this, R.string.message_saved_as_draft,
Toast.LENGTH_SHORT).show();
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货