在Flutter中使用mailto链接时,出现“找不到处理意图的活动”错误。

7

我正在使用来自 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>
1个回答

4
这可能是由两个问题引起的:
首先,您需要将此“intent”添加到AndroidManifest.xml中或添加“queries”元素(如果尚不存在),如文档中所述。 将“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。所以在真实设备上尝试一下,应该可以正常工作。

1
问题确实出在模拟器上,谢谢! - Igor Gaponov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接