未发现 Activity 在 flutter 中使用 mailto link 处理意图错误
No Activity found to handle intent error using mailto link in flutter
我正在使用 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>
这可能是由两个问题引起的:
首先您需要将此 intent
添加到您的 AndroidManifest.xml 或添加 queries
元素(如果尚不存在),如 documentation 中所述。添加 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。
所以在真实设备上试试吧,它应该可以正常工作。
我正在使用 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>
这可能是由两个问题引起的:
首先您需要将此 intent
添加到您的 AndroidManifest.xml 或添加 queries
元素(如果尚不存在),如 documentation 中所述。添加 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。
所以在真实设备上试试吧,它应该可以正常工作。