WiFi检测双模式对话框说明.md 7.9 KB

WiFi 检测双模式对话框说明

🎯 功能概述

现在 WiFi 检测功能支持两种对话框模式

  1. 完整版对话框:首次检测时显示,有"不再提示"选项
  2. 简化版对话框:用户选择"不再提示"后显示,仍然可以跳转到 WiFi 设置

✨ 新功能特性

✅ 即使用户选择了"不再提示",仍然会提示

  • 用户不会被完全"锁死"
  • 仍然可以方便地跳转到 WiFi 设置
  • 可以重新启用完整提示

✅ 两种对话框模式

模式 1:完整版对话框(首次或重新启用后)

┌─────────────────────────────────┐
│        WiFi 未连接              │
├─────────────────────────────────┤
│ 检测到设备未连接 WiFi 网络。    │
│                                 │
│ 请配置 WiFi 后才能继续使用。    │
├─────────────────────────────────┤
│  [去设置]        [不再提示]     │
└─────────────────────────────────┘

按钮说明

  • 去设置:跳转到系统 WiFi 设置页面
  • 不再提示:保存设置,下次显示简化版对话框

模式 2:简化版对话框(用户选择"不再提示"后)

┌─────────────────────────────────────────┐
│            WiFi 未连接                  │
├─────────────────────────────────────────┤
│ 检测到设备未连接 WiFi 网络。            │
│                                         │
│ 建议连接 WiFi 以确保应用正常运行。      │
├─────────────────────────────────────────┤
│ [去设置] [稍后再说] [重新启用提示]      │
└─────────────────────────────────────────┘

按钮说明

  • 去设置:跳转到系统 WiFi 设置页面
  • 稍后再说:关闭对话框,下次仍显示简化版
  • 重新启用提示:清除"不再提示"设置,立即显示完整版对话框

🔄 工作流程

流程 1:首次使用(完整版对话框)

应用启动
    ↓
检测 WiFi(2秒延迟)
    ↓
WiFi 未连接 + 未设置"不再提示"
    ↓
显示完整版对话框
    ↓
用户选择:
    ├─ "去设置" → 跳转 WiFi 设置 → 返回后重新检测
    └─ "不再提示" → 保存设置 → 关闭对话框

流程 2:用户选择"不再提示"后(简化版对话框)

应用启动
    ↓
检测 WiFi(2秒延迟)
    ↓
WiFi 未连接 + 已设置"不再提示"
    ↓
显示简化版对话框
    ↓
用户选择:
    ├─ "去设置" → 跳转 WiFi 设置 → 返回后重新检测
    ├─ "稍后再说" → 关闭对话框
    └─ "重新启用提示" → 清除设置 → 显示完整版对话框

流程 3:重新启用提示

简化版对话框
    ↓
点击"重新启用提示"
    ↓
清除"不再提示"设置
    ↓
500ms 延迟
    ↓
自动显示完整版对话框
    ↓
用户可以重新选择

📝 代码修改说明

修改的方法

1. checkWifiOnActivityStart()

修改前

if (shouldSkipWifiCheck(activity)) {
    Log.d(TAG, "用户已选择不再提示,跳过 WiFi 检测");
    return;  // ❌ 直接跳过,不显示任何对话框
}

修改后

if (!isWifiConnected(activity)) {
    if (shouldSkipWifiCheck(activity)) {
        showSimpleWifiDialog(activity);  // ✅ 显示简化版对话框
    } else {
        showWifiNotConnectedDialog(activity);  // ✅ 显示完整版对话框
    }
}

2. checkWifiOnActivityResume()

同样的修改逻辑,确保从 WiFi 设置返回后也能正确显示对应的对话框。

新增的方法

showSimpleWifiDialog(Activity activity)

显示简化版对话框,包含三个按钮:

  • 去设置:跳转到 WiFi 设置
  • 稍后再说:关闭对话框
  • 重新启用提示:清除设置并显示完整版对话框

🎨 用户体验优化

优点

  1. 不会完全屏蔽提示

    • 即使用户选择"不再提示",仍然会有简化版提示
    • 确保用户不会忘记连接 WiFi
  2. 提供反悔机会

    • "重新启用提示"按钮让用户可以恢复完整提示
    • 不需要清除应用数据或重新安装
  3. 更友好的提示

    • 简化版对话框的文案更温和:"建议连接 WiFi"
    • 而不是强制性的"必须连接"
  4. 灵活的选择

    • 用户可以根据实际情况选择
    • "稍后再说"让用户可以暂时关闭提示

📊 对话框对比

特性 完整版对话框 简化版对话框
显示时机 首次检测或重新启用后 用户选择"不再提示"后
标题 WiFi 未连接 WiFi 未连接
消息语气 强制性(必须连接) 建议性(建议连接)
按钮数量 2 个 3 个
按钮 1 去设置 去设置
按钮 2 不再提示 稍后再说
按钮 3 - 重新启用提示
可取消

🧪 测试步骤

测试场景 1:首次使用

  1. 清除应用数据
  2. 断开 WiFi
  3. 启动应用
  4. 预期:显示完整版对话框(2个按钮)

测试场景 2:选择"不再提示"后

  1. 在完整版对话框中点击"不再提示"
  2. 重启应用(WiFi 仍未连接)
  3. 预期:显示简化版对话框(3个按钮)

测试场景 3:重新启用提示

  1. 在简化版对话框中点击"重新启用提示"
  2. 预期:立即显示完整版对话框

测试场景 4:从 WiFi 设置返回

  1. 在任意对话框中点击"去设置"
  2. 在 WiFi 设置中不连接 WiFi
  3. 按返回键返回应用
  4. 预期:根据之前的设置显示对应的对话框

📱 日志输出

完整版对话框

D WifiCheckHelper: 📍 延迟检测开始执行
D WifiCheckHelper: ⚠️ WiFi 未连接
D WifiCheckHelper: 是否跳过 WiFi 检测: false
D WifiCheckHelper: 显示完整版 WiFi 提示对话框
D WifiCheckHelper: ✅ WiFi 未连接对话框已显示(完整版)

简化版对话框

D WifiCheckHelper: 📍 延迟检测开始执行
D WifiCheckHelper: ⚠️ WiFi 未连接
D WifiCheckHelper: 是否跳过 WiFi 检测: true
D WifiCheckHelper: 用户之前选择了不再提示,显示简化版对话框
D WifiCheckHelper: ✅ WiFi 未连接对话框已显示(简化版)

重新启用提示

D WifiCheckHelper: 用户选择:重新启用提示
D WifiCheckHelper: ✅ WiFi 检测设置已重置
D WifiCheckHelper: ✅ WiFi 未连接对话框已显示(完整版)

🚀 使用建议

对于开发者

  1. 重新编译应用

    gradlew clean assembleDebug
    
  2. 重新安装

    adb install -r app\build\outputs\apk\debug\app-debug.apk
    
  3. 测试

    .\快速测试WiFi检测.bat
    

对于用户

  • 如果不想频繁看到提示,可以点击"不再提示"
  • 之后仍然会有简化版提示,可以方便地跳转到 WiFi 设置
  • 如果想恢复完整提示,点击"重新启用提示"即可

🎉 总结

现在的 WiFi 检测功能更加人性化:

永远不会完全屏蔽提示 - 即使选择"不再提示"也会有简化版
提供反悔机会 - 可以重新启用完整提示
更灵活的选择 - 三个按钮满足不同需求
更友好的文案 - 建议而非强制
保持功能性 - 始终可以跳转到 WiFi 设置

这样既满足了强制检测 WiFi 的需求,又不会让用户感到被"锁死"!