From b8f1a9e8d7128ae7ee48b266451fcdeae15ff79d Mon Sep 17 00:00:00 2001 From: wuxu Date: Tue, 28 Apr 2026 22:36:55 +0800 Subject: [PATCH] init --- app/android/app/src/main/AndroidManifest.xml | 2 +- app/lib/screens/sms_list_screen.dart | 26 +++++++++++++++++--- server/src/routes/sms.ts | 2 +- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/app/android/app/src/main/AndroidManifest.xml b/app/android/app/src/main/AndroidManifest.xml index 2005549..bca3fa2 100644 --- a/app/android/app/src/main/AndroidManifest.xml +++ b/app/android/app/src/main/AndroidManifest.xml @@ -5,7 +5,7 @@ - + { if (newVal) { // Request notification permission for foreground service - await Permission.notification.request(); - _startForegroundService(); + final notifResult = await FlutterForegroundTask.requestNotificationPermission(); + if (notifResult != NotificationPermission.granted) { + if (mounted) { + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar(content: Text('需要通知权限才能保持后台运行')), + ); + } + settings.setAutoUpload(false); + setState(() {}); + return; + } + await _startForegroundService(); _startAutoUpload(); } else { _stopForegroundService(); @@ -143,12 +153,20 @@ class _SmsListScreenState extends State { setState(() {}); } - void _startForegroundService() { - FlutterForegroundTask.startService( + Future _startForegroundService() async { + final result = await FlutterForegroundTask.startService( + serviceId: 888, notificationTitle: 'SMS Monitor', notificationText: '正在监听新短信...', callback: startCallback, ); + if (result is ServiceRequestFailure && mounted) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text('后台服务启动失败: ${result.error}')), + ); + settings.setAutoUpload(false); + setState(() {}); + } } void _stopForegroundService() { diff --git a/server/src/routes/sms.ts b/server/src/routes/sms.ts index 79092df..8738072 100644 --- a/server/src/routes/sms.ts +++ b/server/src/routes/sms.ts @@ -40,7 +40,7 @@ router.post('/upload', (req, res: Response) => { router.get('/', (req, res: Response) => { const page = Math.max(1, parseInt(req.query.page as string) || 1); - const limit = Math.min(100, Math.max(1, parseInt(req.query.limit as string) || 20)); + const limit = Math.min(999999, Math.max(1, parseInt(req.query.limit as string) || 20)); const offset = (page - 1) * limit; let where = 'WHERE 1=1';