应用启动时自动检测 WiFi 连接状态,如果未连接 WiFi,会弹出提示对话框,引导用户去设置 WiFi。
PandoraEntryActivity 启动时自动检测弹出对话框包含两个选项:
重要特性:
路径:app/src/main/java/com/YuyeTech/HeartRate/WifiCheckHelper.java
主要方法:
// 检查 WiFi 是否连接
public static boolean isWifiConnected(Context context)
// 显示 WiFi 未连接对话框
public static void showWifiNotConnectedDialog(Activity activity)
// 检查是否应该跳过 WiFi 检测
public static boolean shouldSkipWifiCheck(Context context)
// 重置 WiFi 检测设置
public static void resetWifiCheckSettings(Context context)
// 在 Activity 启动时自动检测 WiFi
public static void checkWifiOnActivityStart(Activity activity)
在 onActivityCreated() 中添加了 WiFi 检测:
// ✅ 检测 WiFi 连接(仅对 PandoraEntryActivity)
if (activity instanceof io.dcloud.PandoraEntryActivity) {
Log.d(TAG, "🔍 开始检测 WiFi 连接...");
WifiCheckHelper.checkWifiOnActivityStart(activity);
}
应用启动
↓
PandoraEntryActivity 创建
↓
延迟 2 秒
↓
检查用户偏好(是否选择了"不再提示")
↓
如果未跳过 → 检测 WiFi 连接状态
↓
如果未连接 WiFi → 显示提示对话框(不可取消)
↓
用户选择:
- 去设置 → 跳转到系统 WiFi 设置
↓
从设置返回(Activity onResume 自动触发)
↓
延迟 500ms 后立即检测(确保 UI 稳定)
↓
如果仍未连接 → 立即显示对话框(强制,无法逃避)🔁
如果已连接 → 检测通过 ✅
- 不再提示 → 保存偏好,关闭对话框
关键特性:
✅ 每次 onResume 都检测(不管从哪里返回)
✅ 延迟仅 500ms,几乎立即弹出
✅ 无法通过快速返回逃避检测
✅ 必须连接 WiFi 或选择"不再提示"
┌─────────────────────────────────┐
│ WiFi 未连接 │
├─────────────────────────────────┤
│ │
│ 检测到设备未连接 WiFi 网络。 │
│ │
│ 请配置 WiFi 后才能继续使用。 │
│ │
├─────────────────────────────────┤
│ [不再提示] [去设置] │
└─────────────────────────────────┘
注意:
- 对话框不可取消(点击外部无效)
- 从设置返回后会自动重新检测
- 如果仍未连接,继续提示
双击运行:测试WiFi检测功能.bat
脚本会自动:
# 1. 断开 WiFi(需要 root)
adb shell svc wifi disable
# 2. 启动应用
adb shell am start -n com.YuyeTech.HeartRate/io.dcloud.PandoraEntry
# 3. 查看日志
adb logcat | findstr "WifiCheckHelper"
# 4. 重新连接 WiFi
adb shell svc wifi enable
D WifiCheckHelper: 是否跳过 WiFi 检测: false
D WifiCheckHelper: WiFi 连接状态: false
D WifiCheckHelper: ⚠️ WiFi 未连接,显示提示对话框(必须连接)
D WifiCheckHelper: ✅ WiFi 未连接对话框已显示(必须连接)
D WifiCheckHelper: 用户选择:去设置
D MyApplication: 📱 PandoraEntryActivity onResume → 开始 WiFi 检测
D WifiCheckHelper: ⚠️ onResume 时 WiFi 未连接
D WifiCheckHelper: 📌 已标记需要重新检测 WiFi(onResume 时触发)
... 500ms 后 ...
D WifiCheckHelper: ⚠️ WiFi 仍未连接,显示提示对话框(强制)
D WifiCheckHelper: ✅ WiFi 未连接对话框已显示(必须连接)
D WifiCheckHelper: ✅ onResume 时 WiFi 已连接
D WifiCheckHelper: 是否跳过 WiFi 检测: false
D WifiCheckHelper: WiFi 连接状态: true
D WifiCheckHelper: ✅ WiFi 已连接或 Activity 已结束
D WifiCheckHelper: 是否跳过 WiFi 检测: true
D WifiCheckHelper: 用户已选择不再提示,跳过 WiFi 检测
在 WifiCheckHelper.java 中修改:
activity.getWindow().getDecorView().postDelayed(() -> {
// ...
}, 2000); // ← 修改这里的延迟时间(毫秒)
在 WifiCheckHelper.java 的 showWifiNotConnectedDialog() 方法中修改:
.setTitle("WiFi 未连接") // ← 标题
.setMessage("检测到设备未连接 WiFi 网络。\n\n是否现在配置 WiFi?") // ← 消息
.setPositiveButton("去设置", ...) // ← 主按钮
.setNegativeButton("不再提示", ...) // ← 取消按钮
.setCancelable(false) // ← false = 不可取消,true = 可取消
// 在 checkWifiOnActivityResume() 中
activity.getWindow().getDecorView().postDelayed(() -> {
// ...
}, 500); // ← 修改这里的延迟时间(毫秒)
// 推荐 500ms,太短可能导致 UI 不稳定,太长用户可能逃避检测
在 MyApplication.java 中注释掉:
// WifiCheckHelper.checkWifiOnActivityResume(activity);
如果需要让用户重新看到提示,可以调用:
WifiCheckHelper.resetWifiCheckSettings(context);
或通过 ADB 清除:
adb shell pm clear com.YuyeTech.HeartRate
应用需要以下权限(已在 AndroidManifest.xml 中声明):
ACCESS_NETWORK_STATE - 检测网络状态ACCESS_WIFI_STATE - 检测 WiFi 状态PandoraEntryActivity 启动时检测PandoraEntry 启动时检测(避免重复)WifiModule.openWifiSettings() 跳转设置WifiModule.showWifiDialogView() 显示自定义 WiFi 列表如果想使用应用内的 WiFi 配置界面,可以修改:
.setPositiveButton("去设置", (dialog, which) -> {
// 使用自定义 WiFi 配置界面
WifiModule.showWifiDialogView(activity, new WifiCallback() {
@Override
public void onConnecting() {
Log.d(TAG, "正在连接 WiFi...");
}
@Override
public void onConnected() {
Log.d(TAG, "WiFi 连接成功");
}
@Override
public void onFailed(String reason) {
Log.e(TAG, "WiFi 连接失败: " + reason);
}
@Override
public void onDisconnected() {
Log.d(TAG, "WiFi 已断开");
}
});
})
可以添加定时检测功能:
// 在 MyApplication 中添加
private Handler wifiCheckHandler = new Handler();
private Runnable wifiCheckRunnable = new Runnable() {
@Override
public void run() {
// 检测 WiFi 状态
wifiCheckHandler.postDelayed(this, 60000); // 每分钟检测一次
}
};
可以监听网络状态变化:
ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() {
@Override
public void onLost(Network network) {
// WiFi 断开时提示
}
};
2026-01-23
WifiCheckHelper.javaMyApplication.java创建时间:2026-01-23
功能版本:1.0
兼容版本:Android 6.0+