Как отправить периодические SMS на Android в фоне в FlutterAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как отправить периодические SMS на Android в фоне в Flutter

Сообщение Anonymous »

Я хочу сделать приложение, что его основная функциональность зависит от отправки SMS. Я использую Flutter, чтобы сделать это для iOS и Android. < /P>
В Android можно отправить SMS в фоновом режиме, если вы получите разрешение пользователя. Но после поиска в сети я не смог найти способ сделать это в трепете. Мне интересно, есть ли какой -нибудь способ отправить SMS в фоновом режиме для Android, используя Flutter. Я прикрепляю снимок файлов main.dart и mainactivity.kt.class SendSms extends StatefulWidget {
const SendSms({super.key});
@override
_SendSmsState createState() => _SendSmsState();
}

class _SendSmsState extends State {
static const platform = MethodChannel('sendSms');
List phoneNumbers = [
"+923000000000",
];
Timer? _timer;

@override
void initState() {
super.initState();
_timer = Timer.periodic(const Duration(seconds: 2), (timer) {
sendSms();
});
}

Future sendSms() async {
for (String number in phoneNumbers) {
try {
final String result = await platform.invokeMethod(
'send',
{
"phone": number,
"msg": "Automatic message",
},
);
if (kDebugMode) {
print("Message sent to $number: $result");
}
} on PlatformException catch (e) {
if (kDebugMode) {
print("Failed to send SMS to $number: ${e.toString()}");
}
}
}
}

@override
void dispose() {
_timer?.cancel();
super.dispose();
}

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text("SMS App")),
body: const Center(
child: Text("Sending SMS every 2 seconds..."),
),
);
}
}
< /code>
mainactivity.kt
class MainActivity : FlutterActivity() {
private val CHANNEL = "sendSms"
private val SMS_PERMISSION_CODE = 1

override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
super.configureFlutterEngine(flutterEngine)

MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL).setMethodCallHandler { call, result ->
print("Method call: ${call.method}");
if (call.method == "send") {
val phone: String? = call.argument("phone")
val msg: String? = call.argument("msg")

if (!phone.isNullOrEmpty() && !msg.isNullOrEmpty()) {
if (checkSmsPermission()) {
sendSMS(phone, msg, result)
} else {
requestSmsPermission(result)
}
} else {
result.error("INVALID_ARGUMENTS","Phone number or message is null", null)
}
} else {
result.notImplemented()
}
}
}

override fun onRequestPermissionsResult(requestCode: Int, permissions: Array, grantResults: IntArray) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
if (requestCode == SMS_PERMISSION_CODE) {
if ((grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED)) {
Log.d("SMS_PERMISSION", "Permission granted")
} else {
Log.e("SMS_PERMISSION", "Permission denied")
}
}
}

private fun checkSmsPermission(): Boolean {
return ContextCompat.checkSelfPermission(this, Manifest.permission.SEND_SMS) == PackageManager.PERMISSION_GRANTED
}

private fun requestSmsPermission(result: MethodChannel.Result) {
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.SEND_SMS), SMS_PERMISSION_CODE)
result.error("PERMISSION_DENIED", "SMS permission is required", null)
}

private fun sendSMS(phoneNo: String, msg: String, result: MethodChannel.Result) {
try {
val smsManager: SmsManager = SmsManager.getDefault()
smsManager.sendTextMessage(phoneNo, null, msg, null, null)
result.success("SMS Sent")
} catch (e: Exception) {
Log.e("SMS_ERROR", "Failed to send SMS", e)
result.error("ERR", "Sms Not Sent", e.localizedMessage)
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/795 ... in-flutter
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»