MissingPluginException для MethodChannel во Flutter на AndroidAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 MissingPluginException для MethodChannel во Flutter на Android

Сообщение Anonymous »

Я обнаружил исключение MissingPluginException при попытке использовать MethodChannel во Flutter для отправки SMS в моем приложении для Android. Несмотря на то, что я правильно реализовал собственный код, приложение выдает эту ошибку во время выполнения.
Ошибка

Код: Выделить всё

E/flutter (10616): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: MissingPluginException(No implementation found for method sendSMS on channel channel_name)
E/flutter (10616): #0      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:332:7)
E/flutter (10616): 
E/flutter (10616): #1      SmsService.sendSms (package:muteify/services/sms_service.dart:8:30)
E/flutter (10616): 
E/flutter (10616): #2      phoneStateBackgroundCallbackHandler (package:muteify/services/phone_state_bg_helper.dart:16:19)
E/flutter (10616): 
Дарт-код (сторона флаттера):

Код: Выделить всё

import 'package:flutter/services.dart';

const platform = MethodChannel('channel_name');

class SmsService {
Future sendSms(String phone, String message) async {
try {
final String? result = await platform.invokeMethod('sendSMS', {
'phone': phone,
'message': message,
});
print("SMS result:  $result");
return result;
} on PlatformException catch (e) {
return "Failed to send SMS: '${e.message}'.";
}
}
}
MainActivity.kt (сторона Android):

Код: Выделить всё

@file:Suppress("DEPRECATION")

package com.example.muteify

import android.telephony.SmsManager
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodChannel
import io.flutter.plugin.common.MethodChannel.Result

class MainActivity : FlutterActivity() {
private val channel = "channel_name"

override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
super.configureFlutterEngine(flutterEngine)
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, channel).setMethodCallHandler { call, result ->
if (call.method=="sendSMS"){
val customerPhone = call.argument("phone")
val customerMessage = call.argument("message")
if (customerPhone != null && customerMessage != null) {
sendSMS(customerPhone, customerMessage, result)
} else {
result.error("INVALID_ARGUMENT", "Phone number or message is null", null)
}
}
else {
result.notImplemented()
}
}
}

private fun sendSMS(phone: String, message: String, result: Result) {
return try {
val smsManager: SmsManager = SmsManager.getDefault()
smsManager.sendTextMessage(phone, null, message, null, null)
result.success("SMS sent successfully")
} catch (e: Exception) {
result.error("SMS_SEND_FAILED", "Failed to send SMS: ${e.message}", null)
}
}
}
AndroidManifest.xml: Что я пробовал:
  • Очистил flutter и пересобрал APK. >
  • Проверено, что имя канала совпадает между кодом Flutter и Android.
  • Проверено, что MethodChannel настроен внутри configureFlutterEngine.
  • Проверено на нескольких устройствах, ошибка по-прежнему возникает.
Ожидаемое поведение:
Приложение должно успешно отправить SMS через MethodChannel, даже если приложение работает в фоновом режиме, без возникновения ошибки MissingPluginException.
< h3>Доктор Флаттера:

Код: Выделить всё

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.24.3, on Pop!_OS 22.04 LTS
6.9.3-76060903-generic, locale en_US.UTF-8)
[✓] Android toolchain - develop for Android devices (Android SDK version 35.0.0)
[✓] Chrome - develop for the web
[✓] Linux toolchain - develop for Linux desktop
[✓] Android Studio (version 2024.1)
[✓] VS Code (version 1.93.1)
[✓] Connected device (3 available)
[✓] Network resources

• No issues found!
Вопрос:
Что может быть причиной этого исключения MissingPluginException и как его устранить? Есть ли что-то, что я пропустил в настройке канала метода или настройке манифеста?

Подробнее здесь: https://stackoverflow.com/questions/790 ... on-android
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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