Не найдено действий для обработки намеренной ошибки с использованием ссылки mailto во флаттере

Я использую документацию со страницы url_launcher: https://pub.dev/packages/url_launcher#android

AndroidManifest.xml:

      <queries>
  <!-- other intents ... -->
  <intent>
    <action android:name="android.intent.action.SEND" />
    <data android:mimeType="*/*" />
  </intent>
</queries>

код:

      final Uri emailLaunchUri = Uri(
  scheme: 'mailto',
  path: 'smith@example.com',
);

launch(emailLaunchUri.toString());

и получаю следующую ошибку:

      E/flutter (11956): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: PlatformException(ACTIVITY_NOT_FOUND, No Activity found to handle intent { mailto:smith@example.com }, null, null)
E/flutter (11956): #0      StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:607:7)
E/flutter (11956): #1      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:156:18)
E/flutter (11956): <asynchronous suspension>
E/flutter (11956): #2      launch (package:url_launcher/url_launcher.dart:99:23)
E/flutter (11956): <asynchronous suspension>
E/flutter (11956): #3      MoreTab.build.<anonymous closure> (package:app/screens/fixtures_screen/more_tab/more_tab.dart:34:13)
E/flutter (11956): <asynchronous suspension>

2 ответа

Решение

Наконец нашел ответ здесь: /questions/6127463/kak-otkryit-prilozhenie-elektronnoj-pochtyi-po-umolchaniyu-na-iphone-s-flutter/55103435#55103435

Необходимо добавить еще одну строку в AndroidManifest.xml:

      <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>

Это может быть вызвано двумя проблемами:

Сначала вам нужно добавить это intentв ваш AndroidManifest.xml или добавьте элемент, если он еще не существует, как описано в документации . Добавлять queriesкак ребенок manifestэлемент.

      <manifest>
    ...other stuff
    <queries>    
        ... other intents
        <!-- If your app sends emails -->
        <intent>
            <action android:name="android.intent.action.SEND" />
            <data android:mimeType="*/*" />
        </intent>
    </queries>
</manifest>

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

У меня тоже была эта проблема или что canLaunch()вернул только false, пока я тестировал приложение на эмуляторе. Проблема с эмулятором может заключаться в том, что почтовое приложение не установлено, поэтому почтовый URL-адрес не может быть запущен.

Так что попробуйте на реальном устройстве, там должно работать нормально.

Другие вопросы по тегам