|
|
|
|
@ -30,6 +30,7 @@ import android.content.SharedPreferences;
|
|
|
|
|
import android.graphics.Paint;
|
|
|
|
|
import android.os.Bundle;
|
|
|
|
|
import android.preference.PreferenceManager;
|
|
|
|
|
import android.text.Html;
|
|
|
|
|
import android.text.Spannable;
|
|
|
|
|
import android.text.SpannableString;
|
|
|
|
|
import android.text.TextUtils;
|
|
|
|
|
@ -43,11 +44,17 @@ import android.view.MotionEvent;
|
|
|
|
|
import android.view.View;
|
|
|
|
|
import android.view.View.OnClickListener;
|
|
|
|
|
import android.view.WindowManager;
|
|
|
|
|
import android.widget.Button;
|
|
|
|
|
import android.widget.CheckBox;
|
|
|
|
|
import android.widget.CompoundButton;
|
|
|
|
|
import android.widget.CompoundButton.OnCheckedChangeListener;
|
|
|
|
|
import android.widget.EditText;
|
|
|
|
|
import android.widget.ImageButton;
|
|
|
|
|
import android.widget.ImageView;
|
|
|
|
|
import android.database.Cursor;
|
|
|
|
|
import android.content.ContentResolver;
|
|
|
|
|
import net.micode.notes.data.Notes;
|
|
|
|
|
import net.micode.notes.data.Notes.NoteColumns;
|
|
|
|
|
import android.widget.LinearLayout;
|
|
|
|
|
import android.widget.TextView;
|
|
|
|
|
import android.widget.Toast;
|
|
|
|
|
@ -91,7 +98,7 @@ public class NoteEditActivity extends Activity implements OnClickListener,
|
|
|
|
|
|
|
|
|
|
public TextView tvAlertDate;
|
|
|
|
|
|
|
|
|
|
public ImageView ibSetBgColor;
|
|
|
|
|
public ImageButton ibSetBgColor;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/** 背景颜色选择按钮映射表,将按钮ID映射到颜色ID */
|
|
|
|
|
@ -141,14 +148,25 @@ public class NoteEditActivity extends Activity implements OnClickListener,
|
|
|
|
|
/** 头部视图面板 */
|
|
|
|
|
private View mHeadViewPanel;
|
|
|
|
|
|
|
|
|
|
/** 粗体按钮 */
|
|
|
|
|
private Button mBtnBold;
|
|
|
|
|
/** 斜体按钮 */
|
|
|
|
|
private Button mBtnItalic;
|
|
|
|
|
/** 下划线按钮 */
|
|
|
|
|
private Button mBtnUnderline;
|
|
|
|
|
/** 字体颜色按钮 */
|
|
|
|
|
private Button mBtnTextColor;
|
|
|
|
|
|
|
|
|
|
/** 背景颜色选择器视图 */
|
|
|
|
|
private View mNoteBgColorSelector;
|
|
|
|
|
/** 字体颜色选择器视图 */
|
|
|
|
|
private View mNoteTextColorSelector;
|
|
|
|
|
|
|
|
|
|
/** 字体大小选择器视图 */
|
|
|
|
|
private View mFontSizeSelector;
|
|
|
|
|
|
|
|
|
|
/** 笔记编辑文本框 */
|
|
|
|
|
private EditText mNoteEditor;
|
|
|
|
|
private NoteEditText mNoteEditor;
|
|
|
|
|
|
|
|
|
|
/** 笔记编辑面板 */
|
|
|
|
|
private View mNoteEditorPanel;
|
|
|
|
|
@ -322,7 +340,10 @@ public class NoteEditActivity extends Activity implements OnClickListener,
|
|
|
|
|
if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) {
|
|
|
|
|
switchToListMode(mWorkingNote.getContent());
|
|
|
|
|
} else {
|
|
|
|
|
mNoteEditor.setText(getHighlightQueryResult(mWorkingNote.getContent(), mUserQuery));
|
|
|
|
|
// 解析HTML格式的富文本内容,添加null检查防止闪退
|
|
|
|
|
String content = mWorkingNote.getContent();
|
|
|
|
|
CharSequence htmlContent = Html.fromHtml(content == null ? "" : content);
|
|
|
|
|
mNoteEditor.setText(getHighlightQueryResult(htmlContent, mUserQuery));
|
|
|
|
|
mNoteEditor.setSelection(mNoteEditor.getText().length());
|
|
|
|
|
}
|
|
|
|
|
for (Integer id : sBgSelectorSelectionMap.keySet()) {
|
|
|
|
|
@ -408,6 +429,12 @@ public class NoteEditActivity extends Activity implements OnClickListener,
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (mNoteTextColorSelector.getVisibility() == View.VISIBLE
|
|
|
|
|
&& !inRangeOfView(mNoteTextColorSelector, ev)) {
|
|
|
|
|
mNoteTextColorSelector.setVisibility(View.GONE);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (mFontSizeSelector.getVisibility() == View.VISIBLE
|
|
|
|
|
&& !inRangeOfView(mFontSizeSelector, ev)) {
|
|
|
|
|
mFontSizeSelector.setVisibility(View.GONE);
|
|
|
|
|
@ -446,9 +473,9 @@ public class NoteEditActivity extends Activity implements OnClickListener,
|
|
|
|
|
mNoteHeaderHolder.tvModified = (TextView) findViewById(R.id.tv_modified_date);
|
|
|
|
|
mNoteHeaderHolder.ivAlertIcon = (ImageView) findViewById(R.id.iv_alert_icon);
|
|
|
|
|
mNoteHeaderHolder.tvAlertDate = (TextView) findViewById(R.id.tv_alert_date);
|
|
|
|
|
mNoteHeaderHolder.ibSetBgColor = (ImageView) findViewById(R.id.btn_set_bg_color);
|
|
|
|
|
mNoteHeaderHolder.ibSetBgColor = (ImageButton) findViewById(R.id.btn_set_bg_color);
|
|
|
|
|
mNoteHeaderHolder.ibSetBgColor.setOnClickListener(this);
|
|
|
|
|
mNoteEditor = (EditText) findViewById(R.id.note_edit_view);
|
|
|
|
|
mNoteEditor = (NoteEditText) findViewById(R.id.note_edit_view);
|
|
|
|
|
mNoteEditorPanel = findViewById(R.id.sv_note_edit);
|
|
|
|
|
mNoteBgColorSelector = findViewById(R.id.note_bg_color_selector);
|
|
|
|
|
for (int id : sBgSelectorBtnsMap.keySet()) {
|
|
|
|
|
@ -456,7 +483,28 @@ public class NoteEditActivity extends Activity implements OnClickListener,
|
|
|
|
|
iv.setOnClickListener(this);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 初始化富文本按钮
|
|
|
|
|
mBtnBold = findViewById(R.id.btn_bold);
|
|
|
|
|
mBtnItalic = findViewById(R.id.btn_italic);
|
|
|
|
|
mBtnUnderline = findViewById(R.id.btn_underline);
|
|
|
|
|
mBtnTextColor = findViewById(R.id.btn_set_text_color);
|
|
|
|
|
mBtnBold.setOnClickListener(this);
|
|
|
|
|
mBtnItalic.setOnClickListener(this);
|
|
|
|
|
mBtnUnderline.setOnClickListener(this);
|
|
|
|
|
mBtnTextColor.setOnClickListener(this);
|
|
|
|
|
|
|
|
|
|
mFontSizeSelector = findViewById(R.id.font_size_selector);
|
|
|
|
|
mNoteTextColorSelector = findViewById(R.id.note_text_color_selector);
|
|
|
|
|
|
|
|
|
|
// 初始化字体颜色选择器的颜色选项
|
|
|
|
|
ImageView ivTextBlack = findViewById(R.id.iv_text_black);
|
|
|
|
|
ImageView ivTextWhite = findViewById(R.id.iv_text_white);
|
|
|
|
|
ImageView ivTextRed = findViewById(R.id.iv_text_red);
|
|
|
|
|
ImageView ivTextBlue = findViewById(R.id.iv_text_blue);
|
|
|
|
|
ivTextBlack.setOnClickListener(this);
|
|
|
|
|
ivTextWhite.setOnClickListener(this);
|
|
|
|
|
ivTextRed.setOnClickListener(this);
|
|
|
|
|
ivTextBlue.setOnClickListener(this);
|
|
|
|
|
for (int id : sFontSizeBtnsMap.keySet()) {
|
|
|
|
|
View view = findViewById(id);
|
|
|
|
|
view.setOnClickListener(this);
|
|
|
|
|
@ -472,6 +520,9 @@ public class NoteEditActivity extends Activity implements OnClickListener,
|
|
|
|
|
mFontSizeId = ResourceParser.BG_DEFAULT_FONT_SIZE;
|
|
|
|
|
}
|
|
|
|
|
mEditTextList = (LinearLayout) findViewById(R.id.note_edit_list);
|
|
|
|
|
|
|
|
|
|
// 将光标改为文本选中光标
|
|
|
|
|
mNoteEditor.setTextIsSelectable(true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
@ -516,15 +567,39 @@ public class NoteEditActivity extends Activity implements OnClickListener,
|
|
|
|
|
public void onClick(View v) {
|
|
|
|
|
int id = v.getId();
|
|
|
|
|
if (id == R.id.btn_set_bg_color) {
|
|
|
|
|
// 显示背景颜色选择器,隐藏其他选择器
|
|
|
|
|
mNoteBgColorSelector.setVisibility(View.VISIBLE);
|
|
|
|
|
mNoteTextColorSelector.setVisibility(View.GONE);
|
|
|
|
|
findViewById(sBgSelectorSelectionMap.get(mWorkingNote.getBgColorId())).setVisibility(
|
|
|
|
|
- View.VISIBLE);
|
|
|
|
|
View.VISIBLE);
|
|
|
|
|
} else if (id == R.id.btn_set_text_color) {
|
|
|
|
|
// 显示字体颜色选择器,隐藏其他选择器
|
|
|
|
|
mNoteTextColorSelector.setVisibility(View.VISIBLE);
|
|
|
|
|
mNoteBgColorSelector.setVisibility(View.GONE);
|
|
|
|
|
} else if (sBgSelectorBtnsMap.containsKey(id)) {
|
|
|
|
|
// 处理背景颜色选择
|
|
|
|
|
findViewById(sBgSelectorSelectionMap.get(mWorkingNote.getBgColorId())).setVisibility(
|
|
|
|
|
View.GONE);
|
|
|
|
|
mWorkingNote.setBgColorId(sBgSelectorBtnsMap.get(id));
|
|
|
|
|
mNoteBgColorSelector.setVisibility(View.GONE);
|
|
|
|
|
} else if (id == R.id.iv_text_black) {
|
|
|
|
|
// 应用黑色字体
|
|
|
|
|
mNoteEditor.applyTextColor(0xFF000000);
|
|
|
|
|
mNoteTextColorSelector.setVisibility(View.GONE);
|
|
|
|
|
} else if (id == R.id.iv_text_white) {
|
|
|
|
|
// 应用白色字体
|
|
|
|
|
mNoteEditor.applyTextColor(0xFFFFFFFF);
|
|
|
|
|
mNoteTextColorSelector.setVisibility(View.GONE);
|
|
|
|
|
} else if (id == R.id.iv_text_red) {
|
|
|
|
|
// 应用红色字体
|
|
|
|
|
mNoteEditor.applyTextColor(0xFFFF0000);
|
|
|
|
|
mNoteTextColorSelector.setVisibility(View.GONE);
|
|
|
|
|
} else if (id == R.id.iv_text_blue) {
|
|
|
|
|
// 应用蓝色字体
|
|
|
|
|
mNoteEditor.applyTextColor(0xFF0000FF);
|
|
|
|
|
mNoteTextColorSelector.setVisibility(View.GONE);
|
|
|
|
|
} else if (sFontSizeBtnsMap.containsKey(id)) {
|
|
|
|
|
// 处理字体大小选择
|
|
|
|
|
findViewById(sFontSelectorSelectionMap.get(mFontSizeId)).setVisibility(View.GONE);
|
|
|
|
|
mFontSizeId = sFontSizeBtnsMap.get(id);
|
|
|
|
|
mSharedPrefs.edit().putInt(PREFERENCE_FONT_SIZE, mFontSizeId).commit();
|
|
|
|
|
@ -537,6 +612,15 @@ public class NoteEditActivity extends Activity implements OnClickListener,
|
|
|
|
|
TextAppearanceResources.getTexAppearanceResource(mFontSizeId));
|
|
|
|
|
}
|
|
|
|
|
mFontSizeSelector.setVisibility(View.GONE);
|
|
|
|
|
} else if (id == R.id.btn_bold) {
|
|
|
|
|
// 应用粗体
|
|
|
|
|
mNoteEditor.applyBold();
|
|
|
|
|
} else if (id == R.id.btn_italic) {
|
|
|
|
|
// 应用斜体
|
|
|
|
|
mNoteEditor.applyItalic();
|
|
|
|
|
} else if (id == R.id.btn_underline) {
|
|
|
|
|
// 应用下划线
|
|
|
|
|
mNoteEditor.applyUnderline();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -565,6 +649,9 @@ public class NoteEditActivity extends Activity implements OnClickListener,
|
|
|
|
|
if (mNoteBgColorSelector.getVisibility() == View.VISIBLE) {
|
|
|
|
|
mNoteBgColorSelector.setVisibility(View.GONE);
|
|
|
|
|
return true;
|
|
|
|
|
} else if (mNoteTextColorSelector.getVisibility() == View.VISIBLE) {
|
|
|
|
|
mNoteTextColorSelector.setVisibility(View.GONE);
|
|
|
|
|
return true;
|
|
|
|
|
} else if (mFontSizeSelector.getVisibility() == View.VISIBLE) {
|
|
|
|
|
mFontSizeSelector.setVisibility(View.GONE);
|
|
|
|
|
return true;
|
|
|
|
|
@ -671,6 +758,12 @@ public class NoteEditActivity extends Activity implements OnClickListener,
|
|
|
|
|
case R.id.menu_delete_remind:
|
|
|
|
|
mWorkingNote.setAlertDate(0, false);
|
|
|
|
|
break;
|
|
|
|
|
case R.id.menu_lock:
|
|
|
|
|
showPasswordDialogForLock();
|
|
|
|
|
break;
|
|
|
|
|
case R.id.menu_unlock:
|
|
|
|
|
showPasswordDialogForUnlock();
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
@ -709,6 +802,139 @@ public class NoteEditActivity extends Activity implements OnClickListener,
|
|
|
|
|
context.startActivity(intent);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 显示密码输入对话框用于锁定笔记
|
|
|
|
|
* <p>
|
|
|
|
|
* 该方法用于显示一个密码输入对话框,让用户输入密码来锁定当前编辑的笔记
|
|
|
|
|
* </p>
|
|
|
|
|
*/
|
|
|
|
|
private void showPasswordDialogForLock() {
|
|
|
|
|
final EditText passwordEditText = new EditText(this);
|
|
|
|
|
passwordEditText.setHint(R.string.hint_enter_password);
|
|
|
|
|
passwordEditText.setInputType(android.text.InputType.TYPE_CLASS_TEXT | android.text.InputType.TYPE_TEXT_VARIATION_PASSWORD);
|
|
|
|
|
|
|
|
|
|
new AlertDialog.Builder(this)
|
|
|
|
|
.setTitle(R.string.dialog_enter_password)
|
|
|
|
|
.setView(passwordEditText)
|
|
|
|
|
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onClick(DialogInterface dialog, int which) {
|
|
|
|
|
String password = passwordEditText.getText().toString();
|
|
|
|
|
if (!TextUtils.isEmpty(password)) {
|
|
|
|
|
lockCurrentNote(password);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
.setNegativeButton(android.R.string.cancel, null)
|
|
|
|
|
.show();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 显示密码输入对话框用于解锁笔记
|
|
|
|
|
* <p>
|
|
|
|
|
* 该方法用于显示一个密码输入对话框,让用户输入密码来解锁当前编辑的笔记
|
|
|
|
|
* </p>
|
|
|
|
|
*/
|
|
|
|
|
private void showPasswordDialogForUnlock() {
|
|
|
|
|
final EditText passwordEditText = new EditText(this);
|
|
|
|
|
passwordEditText.setHint(R.string.hint_enter_password);
|
|
|
|
|
passwordEditText.setInputType(android.text.InputType.TYPE_CLASS_TEXT | android.text.InputType.TYPE_TEXT_VARIATION_PASSWORD);
|
|
|
|
|
|
|
|
|
|
new AlertDialog.Builder(this)
|
|
|
|
|
.setTitle(R.string.dialog_enter_password)
|
|
|
|
|
.setView(passwordEditText)
|
|
|
|
|
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onClick(DialogInterface dialog, int which) {
|
|
|
|
|
String password = passwordEditText.getText().toString();
|
|
|
|
|
if (!TextUtils.isEmpty(password)) {
|
|
|
|
|
unlockCurrentNote(password);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
.setNegativeButton(android.R.string.cancel, null)
|
|
|
|
|
.show();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 锁定当前笔记
|
|
|
|
|
* <p>
|
|
|
|
|
* 该方法用于锁定当前编辑的笔记,更新其锁定状态、密码和锁定类型
|
|
|
|
|
* </p>
|
|
|
|
|
* @param password 用于锁定的密码
|
|
|
|
|
*/
|
|
|
|
|
private void lockCurrentNote(String password) {
|
|
|
|
|
// 设置锁定状态为1(已锁定)
|
|
|
|
|
mWorkingNote.setNoteValue(NoteColumns.IS_LOCKED, "1");
|
|
|
|
|
// 设置加密后的密码
|
|
|
|
|
mWorkingNote.setNoteValue(NoteColumns.LOCK_PASSWORD, encryptPassword(password));
|
|
|
|
|
// 设置锁定类型为笔记类型
|
|
|
|
|
mWorkingNote.setNoteValue(NoteColumns.LOCK_TYPE, String.valueOf(Notes.LOCK_TYPE_NOTE));
|
|
|
|
|
// 保存笔记
|
|
|
|
|
saveNote();
|
|
|
|
|
// 显示提示信息
|
|
|
|
|
Toast.makeText(this, getString(R.string.message_note_locked), Toast.LENGTH_SHORT).show();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 解锁当前笔记
|
|
|
|
|
* <p>
|
|
|
|
|
* 该方法用于解锁当前编辑的笔记,更新其锁定状态和密码
|
|
|
|
|
* </p>
|
|
|
|
|
* @param password 用于解锁的密码
|
|
|
|
|
*/
|
|
|
|
|
private void unlockCurrentNote(String password) {
|
|
|
|
|
// 使用ContentResolver直接查询数据库获取加密密码
|
|
|
|
|
String[] projection = {NoteColumns.LOCK_PASSWORD};
|
|
|
|
|
String selection = NoteColumns.ID + "=?";
|
|
|
|
|
String[] selectionArgs = {String.valueOf(mWorkingNote.getNoteId())};
|
|
|
|
|
|
|
|
|
|
Cursor cursor = getContentResolver().query(Notes.CONTENT_NOTE_URI, projection, selection, selectionArgs, null);
|
|
|
|
|
String encryptedPassword = null;
|
|
|
|
|
|
|
|
|
|
if (cursor != null && cursor.moveToFirst()) {
|
|
|
|
|
encryptedPassword = cursor.getString(0);
|
|
|
|
|
cursor.close();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 验证密码是否正确
|
|
|
|
|
if (encryptedPassword != null && encryptedPassword.equals(encryptPassword(password))) {
|
|
|
|
|
// 密码正确,设置锁定状态为0(未锁定)
|
|
|
|
|
mWorkingNote.setNoteValue(NoteColumns.IS_LOCKED, "0");
|
|
|
|
|
// 清空密码
|
|
|
|
|
mWorkingNote.setNoteValue(NoteColumns.LOCK_PASSWORD, "");
|
|
|
|
|
// 保存笔记
|
|
|
|
|
saveNote();
|
|
|
|
|
// 显示提示信息
|
|
|
|
|
Toast.makeText(this, getString(R.string.message_note_unlocked), Toast.LENGTH_SHORT).show();
|
|
|
|
|
} else {
|
|
|
|
|
// 密码错误,显示错误信息
|
|
|
|
|
Toast.makeText(this, getString(R.string.error_wrong_password), Toast.LENGTH_SHORT).show();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 加密密码
|
|
|
|
|
* <p>
|
|
|
|
|
* 该方法使用Base64和ANDROID_ID对密码进行加密
|
|
|
|
|
* </p>
|
|
|
|
|
* @param password 原始密码
|
|
|
|
|
* @return 加密后的密码
|
|
|
|
|
*/
|
|
|
|
|
private String encryptPassword(String password) {
|
|
|
|
|
try {
|
|
|
|
|
// 获取设备的ANDROID_ID作为加密密钥
|
|
|
|
|
String androidId = android.provider.Settings.Secure.getString(getContentResolver(),
|
|
|
|
|
android.provider.Settings.Secure.ANDROID_ID);
|
|
|
|
|
// 使用简单的加密算法:将密码与ANDROID_ID拼接后进行Base64编码
|
|
|
|
|
String combined = password + androidId;
|
|
|
|
|
return android.util.Base64.encodeToString(combined.getBytes(), android.util.Base64.DEFAULT);
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
Log.e(TAG, "Password encryption failed", e);
|
|
|
|
|
return password; // 加密失败时返回原始密码
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 创建新笔记
|
|
|
|
|
* <p>
|
|
|
|
|
@ -910,11 +1136,11 @@ public class NoteEditActivity extends Activity implements OnClickListener,
|
|
|
|
|
* <p>
|
|
|
|
|
* 该方法在完整文本中查找用户查询的内容,并为匹配项添加背景高亮效果
|
|
|
|
|
* </p>
|
|
|
|
|
* @param fullText 完整的文本内容
|
|
|
|
|
* @param fullText 完整的文本内容,支持CharSequence类型
|
|
|
|
|
* @param userQuery 用户查询的内容
|
|
|
|
|
* @return 带有高亮查询结果的Spannable对象
|
|
|
|
|
*/
|
|
|
|
|
private Spannable getHighlightQueryResult(String fullText, String userQuery) {
|
|
|
|
|
private Spannable getHighlightQueryResult(CharSequence fullText, String userQuery) {
|
|
|
|
|
SpannableString spannable = new SpannableString(fullText == null ? "" : fullText);
|
|
|
|
|
if (!TextUtils.isEmpty(userQuery)) {
|
|
|
|
|
mPattern = Pattern.compile(userQuery);
|
|
|
|
|
@ -1048,7 +1274,8 @@ public class NoteEditActivity extends Activity implements OnClickListener,
|
|
|
|
|
}
|
|
|
|
|
mWorkingNote.setWorkingText(sb.toString());
|
|
|
|
|
} else {
|
|
|
|
|
mWorkingNote.setWorkingText(mNoteEditor.getText().toString());
|
|
|
|
|
// 保留富文本格式,将 Spanned 转换为 HTML 字符串保存
|
|
|
|
|
mWorkingNote.setWorkingText(Html.toHtml(mNoteEditor.getText()));
|
|
|
|
|
}
|
|
|
|
|
return hasChecked;
|
|
|
|
|
}
|
|
|
|
|
|