You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中使用url_launcher打开Yahoo Mail应用失败求助

解决url_launcher在Android无法启动Yahoo Mail的问题

1. 修正AndroidManifest.xml的配置(适配Android 11+)

Android 11及以上系统要求声明应用可见性,同时要确保Intent Filter匹配Yahoo Mail的自定义Scheme:

<!-- 在<manifest>标签内添加包可见性声明 -->
<queries>
    <package android:name="com.yahoo.mobile.client.android.mail" />
</queries>

<!-- 在主Activity的<intent-filter>内添加Yahoo Mail的Scheme支持 -->
<activity
    android:name=".MainActivity"
    ...>
    <intent-filter>
        ...
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="ymail" />
        <data android:scheme="yahoo-mail" />
    </intent-filter>
</activity>

2. 使用Yahoo Mail专属的启动URL

不要用通用的mailto:链接(会唤起默认邮件应用),改用Yahoo Mail的Intent格式URL:

import 'package:url_launcher/url_launcher.dart';

void launchYahooMail() async {
  // 直接打开Yahoo Mail主界面
  const launchUrl = 'intent://#Intent;package=com.yahoo.mobile.client.android.mail;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;end';
  
  // 若需直接跳转至发件页(带收件人),可替换为:
  // const launchUrl = 'intent://send/?to=target@example.com#Intent;scheme=ymail;package=com.yahoo.mobile.client.android.mail;end';

  final uri = Uri.parse(launchUrl);
  if (await canLaunchUrl(uri)) {
    await launchUrl(uri, mode: LaunchMode.externalApplication);
  } else {
    // 未安装Yahoo Mail时,跳转至网页版
    await launchUrl(Uri.parse('https://mail.yahoo.com'));
  }
}

3. 验证依赖与基础配置

  • 确保pubspec.yaml中url_launcher为最新稳定版:
dependencies:
  url_launcher: ^6.2.5 # 替换为当前最新版本
  • 卸载并重新安装应用(确保Manifest配置生效)
  • 确认测试设备已安装Yahoo Mail,且应用未被禁止启动其他应用的权限

内容的提问来源于stack exchange,提问作者Subin Saji

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 06:34:59