为什么三星部分设备会出现flutter无法上网的问题?

问题描述 投票:0回答:2

我正在开发一个 flutter 应用程序,我需要检查互联网连接。但除了三星 s23、Galaxy Z Fold5 之外,它在其他设备上运行良好。我正在检查发布的 apk,并且没有任何实际设备访问权限,因此我可以获得任何调试结果。

在AndroidManifest中,我已经获取了这个权限:

<uses-permission android:name="android.permission.INTERNET" />

这是用于检查互联网连接的代码:

final result = await InternetAddress.lookup('example.com');

try {
    if (result.isNotEmpty && result[0].rawAddress.isNotEmpty) {
        Get.snackbar('Internet', 'Navigate to Internet');
    } else {
        Get.snackbar('No Internet', 'Navigate to No Internet');
    }
} on SocketException catch (_) {
    Get.snackbar('No Internet', 'SocketException');
}

在发布模式下,它始终显示异常中的snackbar。我需要显示“导航到互联网”信息栏。

我可以得到任何解决方案吗?

android flutter dart user-permissions
2个回答
0
投票

在使用发布的 APK 时,您似乎在检查 Flutter 应用程序中的互联网连接时遇到了问题,特别是在 Samsung S23 和 Galaxy Z Fold5 设备上。以下是一些可帮助您排除故障并可能解决问题的建议:

  1. 网络安全配置:

    • 检查 Samsung S23 和 Galaxy Z Fold5 设备是否具有任何可能影响发布 APK 中的互联网连接检查的特定网络安全配置。某些设备可能具有更严格的网络安全设置,这可能会影响网络相关的操作。
  2. 网络权限:

    • 确保在 Samsung S23 和 Galaxy Z Fold5 设备上正确授予发布 APK 的网络权限。发布的 APK 可能需要额外的权限或特定配置才能在这些设备上访问互联网。
  3. 网络连接检查:

    • 不要使用
      InternetAddress.lookup
      方法,尝试使用 Flutter 中的
      Connectivity
      包来检查网络连接状态。该软件包提供更全面的网络连接检查,可以更有效地处理各种场景。
  4. 网络配置:

    • 检查 Samsung S23 和 Galaxy Z Fold5 设备上是否存在任何可能影响发布 APK 中的网络连接检查的特定网络配置,例如代理设置或自定义 DNS 配置。
  5. 在真实设备上测试:

    • 如果可能,请尝试在真实的 Samsung S23 和 Galaxy Z Fold5 设备上测试发布的 APK,看看问题是否仍然存在。真实设备测试可以更准确地了解应用程序在这些设备上的特定行为。
  6. 错误记录:

    • 在应用程序中实施错误日志记录,以捕获在 Samsung S23 和 Galaxy Z Fold5 设备上进行网络连接检查期间发生的任何特定错误消息或异常。这可以帮助诊断问题的根本原因。

请注意,如果无法访问真实设备进行调试,可能很难查明问题的确切原因。如果可能,请考虑联系拥有 Samsung S23 和 Galaxy Z Fold5 设备的用户,以收集有关其发布 APK 体验的更多信息。

通过考虑这些建议并可能在真实设备上进行测试,您也许能够确定导致问题的具体因素,并找到解决方案以确保在 Samsung S23 和 Galaxy Z Fold5 设备上进行准确的互联网连接检查。


0
投票

Dart SDK 中似乎存在问题。没有修复就关闭了。

一个建议是使用 internet_connection_checker_plus 包,它似乎完全符合您想要实现的目标。

要使用它,请将以下内容添加到您的

pubspec.yaml

dependencies:
  internet_connection_checker_plus: ^2.1.0

并更改您的代码以使用它:

final hasInternet = await InternetConnection().hasInternetAccess;

if (hasInternet) {
    Get.snackbar('Internet', 'Navigate to Internet');
} else {
    Get.snackbar('No Internet', 'Navigate to No Internet');
}
© www.soinside.com 2019 - 2024. All rights reserved.