Android:建立互联网连接

时间:2011-10-28 10:24:27

标签: android

我很惊讶在这种常见情况下我无法在互联网上找到任何信息:我如何开始上网?我看了ConnectivityManager,但它似乎只是为了监控网络连接。

PS:手机将被植根,所以这不是问题。

4 个答案:

答案 0 :(得分:2)

如果您只想启用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"/>

答案 1 :(得分:1)

你确实可以打开或关闭wifi(另见this article) 但无法保证如果打开wifi,将会有互联网连接。

ConnectivityManager仅允许您检查当前的连接状态。您无法使用它来启用连接。此外,ConnectivityManager不知道活动网络连接是否是Internet连接,但您可以自行检查(参见this post 例如)。

答案 2 :(得分:1)

我找到了以下解决方案:

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

答案 3 :(得分:0)

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

此图表(来自wiki)有助于演示套接字的用法: enter image description here

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

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