import 'dart:async'; import 'package:call_log/call_log.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter_background_service/flutter_background_service.dart'; import 'package:flutter_sms/flutter_sms.dart'; import 'package:telephony/telephony.dart'; Future _sendSMS(String message, List recipients) async { // String result = await sendSMS(message: message, recipients: recipients, sendDirect: true) // .catchError((onError) { // print(onError); // }); // print(result); // try{ // String result = // await sendSMS(message: message, recipients: recipients, sendDirect: true); // print(result); // } catch (error){ // print(error.toString()); // } await sendSMS(message: message, recipients: recipients, sendDirect: true); } Future initializeService() async { final service = FlutterBackgroundService(); service.setNotificationInfo(title: '短信助手', content: '正在后台运行'); await service.configure( androidConfiguration: AndroidConfiguration( onStart: onStart, autoStart: true, isForegroundMode: true, ), iosConfiguration: IosConfiguration( autoStart: true, onForeground: onStart, onBackground: onIosBackground, ), ); } void onIosBackground() { WidgetsFlutterBinding.ensureInitialized(); // print('FLUTTER BACKGROUND FETCH'); } void onStart() async{ int flag = 0; String phoneNum=""; String callState; WidgetsFlutterBinding.ensureInitialized(); Timer.periodic(const Duration(seconds: 1), (timer) async { CallState state = await Telephony.instance.callState; callState = state.name; // print(callState!+" $flag"); if (callState == "IDLE") { if (flag != 0) { flag = 0; // print("object"); final Iterable result = await CallLog.query(); phoneNum = result.first.number!; if(phoneNum.isEmpty){ print("At Least 1 Person or Message Required"); }else{ print("你好"+phoneNum); // await sendSMS(message: phoneNum, recipients: [phoneNum], sendDirect: true); await sendSMS(message:'你好', recipients: ["13395740386"], sendDirect: true); // await _sendSMS("你好", [phoneNum]); print("你好"+phoneNum); } } } else if (callState == "RINGING") { flag++; } else if (callState == "OFFHOOK") { flag++; } }); }