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';