From 1e25ca295d412ef8dcae234dca46e9cf292869ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E5=8B=A4=E6=B0=91?= Date: Thu, 7 Nov 2024 19:59:52 +0800 Subject: [PATCH] =?UTF-8?q?feat(app):=20=E6=96=B0=E5=A2=9E=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E6=9B=B4=E6=96=B0=E5=92=8C=E9=94=99=E8=AF=AF=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 AppUpdateView 组件用于显示版本更新提示 - 实现版本检查和更新逻辑 - 添加错误日志收集和上传功能 - 新增 FeedbackView 组件用于用户反馈问题 - 优化 CrashHelper 类,支持错误日志格式化 --- src/main/ets/pages/XWebview.ets | 2 +- src/main/ets/utils/CrashHelper.ets | 7 ++++++- src/main/ets/utils/PickerHelper.ets | 12 +++++++----- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/main/ets/pages/XWebview.ets b/src/main/ets/pages/XWebview.ets index f4c6699..1886da8 100644 --- a/src/main/ets/pages/XWebview.ets +++ b/src/main/ets/pages/XWebview.ets @@ -214,7 +214,7 @@ export struct XWebview { }) .onShowFileSelector((event) => { // 选择文件 console.log('MyFileUploader onShowFileSelector invoked') - const documentSelectOptions = new picker.DocumentSelectOptions(); + const documentSelectOptions = new picker.DocumentSelectOptions() let uri: string | null = null; const documentViewPicker = new picker.DocumentViewPicker(); documentViewPicker.select(documentSelectOptions).then((documentSelectResult) => { diff --git a/src/main/ets/utils/CrashHelper.ets b/src/main/ets/utils/CrashHelper.ets index 24d20ef..5d30caf 100644 --- a/src/main/ets/utils/CrashHelper.ets +++ b/src/main/ets/utils/CrashHelper.ets @@ -17,6 +17,11 @@ export class CrashHelper { private static observerId: number = -100; private static ErrorFilePath: string = ''; //错误日志文件路径 + // 多条报错直接的分隔符 + static separatorError = '--------------------------------------------------------\n' + // 单个报错信息的分隔符 + // 报错信息格式 yyyy-MM-dd HH:mm:ss- 异常信息:\n'报错信息' + static separatorLine = '- 异常信息:\n' /** * 注册错误观测器。注册后可以捕获到应用产生的js crash,应用崩溃时进程不会退出。将异常信息写入本地文件。 @@ -29,7 +34,7 @@ export class CrashHelper { } CrashHelper.observerId = errorManager.on('error', { onUnhandledException(errMsg) { - let errStr = `${TimeHelper.getTime()} - 异常信息:\n${errMsg}\n\n\n`; + let errStr = `${CrashHelper.separatorError}${TimeHelper.getTime()} ${CrashHelper.separatorLine}${errMsg}\n\n\n`; LogHelper.error(errMsg) CrashHelper.ErrorFilePath = FileHelper.getFilesDirPath("ErrorLog", "errorLog.txt") FileHelper.writeEasy(CrashHelper.ErrorFilePath, errStr); diff --git a/src/main/ets/utils/PickerHelper.ets b/src/main/ets/utils/PickerHelper.ets index 6d0fa6a..992521c 100644 --- a/src/main/ets/utils/PickerHelper.ets +++ b/src/main/ets/utils/PickerHelper.ets @@ -3,6 +3,7 @@ import { camera, cameraPicker } from '@kit.CameraKit'; import { common } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; import { hilog } from '@kit.PerformanceAnalysisKit'; +import { photoAccessHelper } from '@kit.MediaLibraryKit'; const DOCUMENT_DEFAULT_SELECT_NUMBER: number = 9; //数量 @@ -50,19 +51,20 @@ export class PickerHelper { * @param options * @returns */ - static async selectPhoto(options?: picker.PhotoSelectOptions): Promise> { + static async selectPhoto(options?: photoAccessHelper.PhotoSelectOptions): Promise> { try { if (!options) { - options = new picker.PhotoSelectOptions(); + options = new photoAccessHelper.PhotoSelectOptions(); } if (!options.MIMEType) { //可选择的媒体文件类型,若无此参数,则默认为图片和视频类型。 - options.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE; + options.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE; } if (!options.maxSelectNumber) { //选择媒体文件数量的最大值,默认9 options.maxSelectNumber = DOCUMENT_DEFAULT_SELECT_NUMBER; } - let photoPicker = new picker.PhotoViewPicker(); - let photoSelectResult: picker.PhotoSelectResult = await photoPicker.select(options); + let photoPicker = new photoAccessHelper.PhotoViewPicker(); + + let photoSelectResult: photoAccessHelper.PhotoSelectResult = await photoPicker.select(options); if (photoSelectResult && photoSelectResult.photoUris && photoSelectResult.photoUris.length > 0) { return photoSelectResult.photoUris; } else {