Signed-off-by: “zsy” <651952673@qq.com>

pull/38/head
“xxx” 2 years ago
parent 42935fa911
commit 84236ed6ae

@ -37,16 +37,17 @@ import java.io.PrintStream;//导入 Java 的打印流(PrintStream)类,用于
//备份的处理
public class BackupUtils {
private static final String TAG = "BackupUtils";
private static final String TAG = "BackupUtils";//定义了一个私有的静态字符串常量 TAG用于日志输出。
// Singleton stuff
private static BackupUtils sInstance;
private static BackupUtils sInstance;//定义了一个私有的静态成员变量 sInstance表示单例对象。
public static synchronized BackupUtils getInstance(Context context) {
if (sInstance == null) {
//如果当前备份不存在,则新声明一个
sInstance = new BackupUtils(context);
sInstance = new BackupUtils(context);//并将传入的上下文参数赋值给它
}
return sInstance;
return sInstance;//。最后返回 sInstance。
}
/**
@ -63,38 +64,37 @@ public class BackupUtils {
public static final int STATE_SYSTEM_ERROR = 3;
// Backup or restore success成功存储
public static final int STATE_SUCCESS = 4;
private TextExport mTextExport;
//备份或恢复成功。
private TextExport mTextExport;//声明了一个私有成员变量 mTextExport表示文本导出对象。
//初始化函数
private BackupUtils(Context context) {
mTextExport = new TextExport(context);
}
}//用于初始化 BackupUtils 对象
//外部存储功能是否可用
private static boolean externalStorageAvailable() {//外部存储功能是否可用
return Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState());
}
}//用于检查外部存储是否可用。它通过比较外部存储的状态是否为 Environment.MEDIA_MOUNTED 来判断外部存储是否可用,并返回布尔值。
//
public int exportToText() {
return mTextExport.exportToText();
}
//用于导出数据到文本文件。该方法调用了 mTextExport 对象的 exportToText() 方法,并返回结果。
public String getExportedTextFileName() {
return mTextExport.mFileName;
}
// 用于获取导出的文本文件名。该方法返回 mTextExport 对象的 mFileName 属性。
public String getExportedTextFileDir() {
return mTextExport.mFileDirectory;
}
private static class TextExport {
// 用于获取导出的文本文件目录。该方法返回 mTextExport 对象的 mFileDirectory 属性。 private static class TextExport {
private static final String[] NOTE_PROJECTION = {
NoteColumns.ID,
NoteColumns.MODIFIED_DATE,
NoteColumns.SNIPPET,
NoteColumns.TYPE
NoteColumns.ID,//表示笔记的唯一标识符。
NoteColumns.MODIFIED_DATE,//表示笔记的修改日期。
NoteColumns.SNIPPET,//表示笔记的摘要或片段。
NoteColumns.TYPE//表示笔记的类型。
};
private static final int NOTE_COLUMN_ID = 0;
@ -171,12 +171,16 @@ public class BackupUtils {
* Export note identified by id to a print stream
*/
private void exportNoteToText(String noteId, PrintStream ps) {
// 通过 mContext.getContentResolver().query() 方法查询数据库,获取与指定笔记 ID 相关的数据。
Cursor dataCursor = mContext.getContentResolver().query(Notes.CONTENT_DATA_URI,
DATA_PROJECTION, DataColumns.NOTE_ID + "=?", new String[] {
noteId
}, null);
if (dataCursor != null) { //利用光标来扫描内容区别为callnote和note两种靠ps.printline输出
// if (dataCursor != null) { //利用光标来扫描内容区别为callnote和note两种靠ps.printline输出
// 如果类型为 DataConstants.CALL_NOTE则获取电话号码、通话时间、附件位置等信息并使用 ps.println() 方法输出到文本文件中。
// 如果类型为 DataConstants.NOTE则获取笔记内容信息并使用 ps.println() 方法输出到文本文件中。
// 在每个笔记结束后,输出一行分隔符(由 Character.LINE_SEPARATOR, Character.LETTER_NUMBER 组成),以便区分不同笔记的内容
if (dataCursor.moveToFirst()) {
do {
String mimeType = dataCursor.getString(DATA_COLUMN_MIME_TYPE);
@ -211,7 +215,7 @@ public class BackupUtils {
dataCursor.close();
}
// print a line separator between note
try {
try {//如果在输出时发生异常,则会记录日志。
ps.write(new byte[] {
Character.LINE_SEPARATOR, Character.LETTER_NUMBER
});

Loading…
Cancel
Save