【问题标题】:Android: Establish internet connectionAndroid:建立互联网连接
【发布时间】:2011-12-17 04:49:11
【问题描述】:

我很惊讶在互联网上找不到任何关于这种常见情况的信息:如何启动互联网连接?我查看了ConnectivityManager,但它似乎只是用于监控网络连接。

PS:手机会root,所以没问题。

【问题讨论】:

  • “我怎样才能开始网络连接?”,意思是你想做什么?
  • 假设我想以编程方式在专用网络上打开 wifi 连接。然后我想连接到服务器上传/下载数据...
  • 那你要监控wifi是否开启?如果不是,那么只需打开一个 wifi 连接对话框,它就会进入 wifi 设置。
  • 我不想要用户交互,它应该自己做所有事情。
  • 我不这么认为,如果没有用户交互,您将无法启用 wifi。可能是出于安全原因。

标签: android


【解决方案1】:

您确实可以打开或关闭 wifi(另请参阅 this article) 但不能保证如果打开 wifi 就会有互联网连接。

ConnectivityManager 只允许您检查当前的连接状态。您不能使用它来启用连接。此外,ConnectivityManager 不知道活动的网络连接是否是 Internet 连接,但您自己很容易检查这一点(请参阅 this post 例如)。

【讨论】:

    【解决方案2】:

    套接字是您所需要的。要获取有关它们的基本信息,请在此处阅读: http://en.wikipedia.org/wiki/Internet_socket 您不必全部阅读,但我认为至少阅读所有“实现问题”以熟悉套接字方法很重要。当然,这些方法对每个平台(Windows、Android...)的实现方式不同,但它们通常在任何地方执行相同的操作。因此,一旦您了解了每个接口的作用,您就可以轻松地在任何平台上使用套接字。

    此图(来自 wiki)有助于演示套接字的用法:

    您在客户端。因此,只需创建一个套接字并调用 connect 方法获取您服务器的 IP 地址。

    就我个人而言,我从未在 Android 开发中使用过套接字。但我认为你应该使用这个类: http://developer.android.com/reference/java/net/Socket.html

    【讨论】:

    • 套接字可能是一种解决方案,但它们的级别相当低。如果 OP 尝试连接的服务器允许,我可能更容易设置 ftphttp connection
    • 套接字是基本的;最好理解它们,然后使用更高级别的类来包装套接字。此外,这些类正在包装要在非常特定的协议中使用的套接字。由于我们不知道原始发布者需要什么协议,所以我们不能告诉他使用除了基本套接字之外的任何协议。
    • 但这并不能回答问题。如何建立首先使用的互联网连接套接字?
    • 如果不创建套接字并将其连接到服务器或其他东西,建立互联网连接是什么意思?
    • 手机可以通过多种方式连接到互联网。它可以使用漫游、Wifi,可以通过电缆连接到 PC 等。我希望能够控制它。
    【解决方案3】:

    如果您只想启用 WiFi,您可以使用此方法:

    private boolean changeWifiState(boolean state) {
        final WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
        wifi.setWifiEnabled(state);
        return wifi.isWifiEnabled();
    }
    

    检查所需的权限。我认为你应该添加这些权限:

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

    【讨论】:

    • 这并不容易。此功能取决于版本。例如,您可以在这里查看如何执行此操作:stackoverflow.com/questions/3644144/…
    • 而且你应该知道Wifi和数据连接通常不能同时启用。
    • +1 感谢您提供有用的答案。然而,这并不是我所需要的(见我的回答)
    【解决方案4】:

    我找到了以下解决方案:

    1) 将首选 wifi/APN(接入点名称)配置添加到手机设置
    2) 启用 Wifi/APN
    3) 连接会自动建立

    Wifi 配置很简单,下面的页面显示了它是如何完成的:

    How to programmatically create and read WEP/EAP WiFi configurations in Android?

    APN 配置很棘手。 Android 有一些隐藏的 API 允许您访问/修改这些设置,您需要使用 Reflection 来执行此操作。当然,这可能会与未来版本的 Android 发生冲突。以下页面说明了如何访问/修改这些设置:

    http://blogs.msdn.com/b/zhengpei/archive/2009/10/13/managing-apn-data-in-google-android.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-26
      相关资源
      最近更新 更多