Я хочу сделать приложение, что его основная функциональность зависит от отправки 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
Как отправить периодические SMS на Android в фоне в Flutter ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1741965849
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)
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79508239/how-to-send-a-periodic-sms-on-android-in-background-in-flutter[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия