Android 机器未联网

2023-12-28

当我的应用程序连接到 WiFi 网络时,我在运行网络服务时遇到问题。 我收到以下异常,

java.net.SocketException: socket failed: ENONET (Machine is not on the network)在下面的 openPort() 方法中

广播接收器

@Override
public void onReceive(Context context, Intent intent) {

    String action = intent.getAction();

    if (WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(action)) {

        NetworkInfo networkInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);

        if (networkInfo.getState() == NetworkInfo.State.CONNECTED) {
            welcomeService = new BroadcastService(context, "Welcome");
            Log.i(TAG, "onReceive: SUPPLICANT-STATE ---> Connected");
            //do something
            if (!serviceRegistered) {
                welcomeService.registerService();
                serviceRegistered = true;
            }
        }

        if (networkInfo.getState() == NetworkInfo.State.DISCONNECTED) {
            Log.i(TAG, "onReceive: SUPPLICANT-STATE ---> Disconnected");
            //do something
            unRegisterService();
        }
    }

}

public void unRegisterService() {
    if (serviceRegistered && welcomeService != null) {
        welcomeService.unregisterService();
        serviceRegistered = false;

    }
}

广播服务

public void registerService() {
    NsdServiceInfo serviceInfo  = new NsdServiceInfo();
    serviceInfo.setServiceName(mServiceName);
    serviceInfo.setServiceType("_http._tcp.");
    serviceInfo.setPort(openPort());

    mNsdManager = (NsdManager) mContext.getSystemService(Context.NSD_SERVICE);

    mNsdManager.registerService(serviceInfo, NsdManager.PROTOCOL_DNS_SD, mRegistrationListener);
}

private int openPort() {
    try{
        // Line that throws the exception
        return  new ServerSocket(0).getLocalPort();
    }catch (IOException ioe){
        Crashlytics.logException(ioe);
        ioe.printStackTrace();
        return 0;
    }
}

广播接收器仅在主要活动显示时运行。第一次运行时效果很好,但是当我更改 WiFi 网络时就会发生这种情况。帮助世界受到极大的赞赏。


使用在网络更改或停止网络时启动服务和停止服务的服务。还要检查首先使用释放的同一端口,然后使用该端口。执行您想要的任何任务onStartCommand().

@Override
public void onReceive(Context context, Intent intent) {
  Date now = new Date();
  Long time = now.getTime();
  String action = intent.getAction();



  NetworkInfo networkInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);

  if (networkInfo.getState() == NetworkInfo.State.CONNECTED) {


    boolean check = isMyServiceRunning(context,
    service.getName());
    if (check) {
      Intent i = new Intent(sqlitewraper.context,service.class);
      stopService(i);
    }
    else{
      Intent i = new Intent(sqlitewraper.context,service.class);
      startservice(i);

    }

  }

  if (networkInfo.getState() == NetworkInfo.State.DISCONNECTED) {

    boolean check = isMyServiceRunning(context,
    service.getName());
    if (check) {
      Intent i = new Intent(sqlitewraper.context,service.class);
      stopService(i);
    }
  }


  private boolean isMyServiceRunning(Context context, String Myservice) {
    ActivityManager manager = (ActivityManager) context
    .getSystemService(Context.ACTIVITY_SERVICE);
    for (RunningServiceInfo service : manager
    .getRunningServices(Integer.MAX_VALUE)) {
      if (Myservice.equals(service.service.getClassName())) {

        return true;
      }
    }
    return false;
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 机器未联网 的相关文章

随机推荐

  • Django 1.11 404 页面,同时 Debug=True

    不让事情变得困难 我只想展示带有静态文件的特殊 404 渲染 如果你设置DEBUG False你可以用在urls py handler404 app views handler404 但它没有静态文件 我不想为简单的应用程序安装网络服务器
  • RDLC 如何使文本对齐?

    我正在 Windows 应用程序中工作 我希望我的 RDLC 报告文本中的内容是合理的 我创建了一个函数来转换字符串列表中的文本 您可以使用不带标题的表格来将其显示为合理的段落 public static List
  • 创建 GGPLOT 直方图

    我有以下函数 n 掷 k 个骰子 其中结果是 k 掷骰子的总和 rolldie function n k Your code here die sample 1 6 size k replace TRUE replicate n sum s
  • ASP.NET MVC 浏览器链接是否不适用于 https (SSL) url?

    我正在尝试 ASP NET MVC 5 的 Browserlink 功能 对于非 SSL 页面来说一切都很好 但是 如果我导航到 SSL 页面 带有 https url 我会在浏览器链接仪表板中看到 0 个连接 那么 浏览器链接是否仅适用于
  • 使 Windows 快捷方式相对于文件夹所在位置启动?

    我有一个使用此文件结构的游戏 GAME FOLDER gt data gt data gt run bat 我想设置一个快捷方式run bat在游戏文件夹中 但如果我移动它 或者其他人安装它 它将无法工作 因为目标是错误的 有没有办法使目标
  • 如何将弹出框放置在文本的突出显示部分上?

    假设有文本正文的场景 而且 在突出显示其中的单词时 我希望显示一个弹出窗口 其中工具提示位于突出显示的单词处 Kind of like how mac shows definitions of words like below 这是一个 A
  • Pandas:将多行数据添加到单行的额外列中

    我有一个像这样的熊猫数据框 id value 1 25 2 40 3 30 理想情况下我想将其转换为 id value value 2 value 3 1 25 40 30 2 40 25 30 3 30 25 40 上述对话背后的逻辑是添
  • Python - 确定 3 个范围的重叠

    我有一个问题 关于如何在不使用任何现有库的情况下确定 Python 中三个范围的重叠 例如 如果我有三个范围 10 20 15 25 18 30 我应该如何找到它们之间的重叠 我的答案应该是 18 19 20 任何帮助将非常感激 谢谢 重叠
  • Paypal 快速结账错误 订单总额缺失。错误10400

    我有问题 我正在尝试将多个商品发送到 Paypal 但它显示 订单总数丢失 10400 错误 版本 76 0我正在贝宝沙箱上测试我的请求 AMT 106 72 RETURNURL http 3A 2F mydomainname com 2F
  • 两个不同区域内的实验数据拟合

    我正在拟合一组实验数据 sample https docs google com spreadsheets d 1JOw7bDwWWXSkR uU2aELrxx33bdqfR1nVci w1VFUOw edit usp sharing 在两
  • 比较Python中的大量字典列表

    我从来没有想过我会遇到 python 的速度问题 但我确实遇到了 我正在尝试根据字典值来比较非常大的字典列表 我比较两个列表 第一个列表如下 biglist1 transaction somevalue id somevalue date
  • 如何使用 ObservableCollection 源实现 XAML 单选按钮控件?

    我有以下内容ComboBoxXAML 中的元素
  • 使用 Readiness Probe 和 RollBack 策略的 Kubernetes 0 停机时间不起作用

    我已经在 Kubernetes 上设置了一个 Node 应用程序 我正在运行单个副本 并且希望在更新映像时停机时间为 0 我使用更新我的 Podset Image在 Kubernetes 上 set image deployment dev
  • Payola 问题:nil:NilClass 的未定义方法“amount”

    我刚刚学习如何使用 Payola 为我的 RoR 5 1 5 测试应用程序创建订阅 我正在按照 wiki 上的说明进行操作 我已经设置了从 Wiki 上的示例中获取的示例表单 并将其直接放入 app views subscriptions
  • 从 RStudio 访问命令行 (cmd)

    在我在 R 下的工作中 我需要调用另一个软件 ANSYS 为此 我正在 R 下寻找一个允许访问命令行窗口 cmd 的命令 例如 在 matlab 下 字符 允许执行此操作 谢谢 您可以使用system system2 or shell在 W
  • IBOutlet 声明?

    我已经看到下面的代码以 3 种不同的方式编写 关于 IBOutlet 这有关系吗 我想说将 IBOutlet 添加到声明和 property 中会更简洁 只是财产 class SwitchViewController interface i
  • 关于对象比较

    我有一个 java 类 Rec 我有两个实例 Rec1 和 Rec2 我想检查 Rec1 和 Rec2 的值是否相等 如果我这样做 Rec1 equals Rec2 是正确的做法吗 class Rec private BigDecimal
  • 如何从 URL 参数获取 unicode 字符?

    我需要使用 GET 请求通过 JavaScript 客户端将 JSON 发送到我的服务器 因此我开始回显响应以确保翻译过程中不会丢失任何内容 普通文本似乎没有问题 但是一旦我包含任何类型的 Unicode 字符 例如 该字符就会以某种方式编
  • JavaScript:回调函数参数与其他变量同名?

    var str internet performAction function str console log str 私有变量有问题吗str并且还有一个带有同名参数的回调函数 Thanks 这只是一个标准范围的情况 它是作为参数传递给另一
  • Android 机器未联网

    当我的应用程序连接到 WiFi 网络时 我在运行网络服务时遇到问题 我收到以下异常 java net SocketException socket failed ENONET Machine is not on the network 在下