安卓:建立互联网连接

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

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


1
“我该如何开始互联网连接?”意思是你想要做什么? - user370305
假设我想通过编程方式打开一个私有网络的WiFi连接,然后连接到服务器上传/下载数据... - Caner
3
那么您需要监测Wi-Fi是否可用?如果不可用,就打开一个Wi-Fi连接对话框,并跳转到Wi-Fi设置页面。 - user370305
3
我认为没有用户交互,你无法启用Wi-Fi,可能是出于安全原因。 - user370305
我不太确定你想做什么,如果你想连接到服务器,你可以尝试使用像URL这样的类:http://docs.oracle.com/javase/1.4.2/docs/api/java/net/URL.html和它的openConnection()方法,或者对于更高级的用途,HttpClient可能对你有用:http://developer.android.com/reference/org/apache/http/client/HttpClient.html。 - Jave
显示剩余2条评论
4个回答

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"/>

这并不是那么容易的事情。而且这个功能是版本相关的。例如,你可以在这里查看如何做到这一点:https://dev59.com/onA65IYBdhLWcg3wxBmr - Yury
你应该知道,Wifi和数据连接通常不能同时启用。 - Yury
1
+1 谢谢你的有用回答。然而这并不完全是我所需要的(请看我的回答)。 - Caner

1

你确实可以打开或关闭WiFi(请参见本文),但如果打开WiFi,不能保证会有互联网连接。

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


1

我找到了以下解决方案:

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

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

如何在Android中以编程方式创建和读取WEP/EAP WiFi配置?

APN配置有些棘手。Android有一些隐藏的API允许您访问/修改这些设置,您需要使用反射来实现。当然,这可能会在未来的Android版本中失效。下面的页面解释了如何访问/修改这些设置:

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


0
套接字是您需要的。要获取有关它们的基本信息,请在此处阅读: http://en.wikipedia.org/wiki/Internet_socket 您不必全部阅读,但我认为至少应该阅读所有“实现问题”以熟悉套接字方法。当然,这些方法对于每个平台(Windows、Android...)都有不同的实现方式,但它们通常在任何地方都执行相同的操作。因此,一旦您了解了每个方法的作用,就可以轻松地在任何平台上使用套接字。
此图表(来自维基百科)有助于演示套接字的使用: enter image description here 您在客户端中。因此,只需创建一个套接字并调用connect方法以连接到服务器的IP地址即可。
就我个人而言,在Android开发中从未使用过套接字。但我认为您应该使用此类: http://developer.android.com/reference/java/net/Socket.html

套接字可能是一种解决方案,但它们相当低级。如果OP尝试连接的服务器允许,建立ftphttp连接可能更容易。 - THelper
套接字是基础,最好先了解它们,然后使用一个将套接字包装在内部的更高级别类。此外,这些类将套接字包装成可用于非常特定协议的形式。由于我们不知道原始帖子需要什么协议,因此我们不能告诉他使用除基本套接字之外的任何东西。 - Jong
但这并没有回答问题。我该如何首先建立互联网连接套接字? - Caner
如果不是创建套接字并将其连接到服务器或其他设备,建立互联网连接是什么意思? - Jong
手机可以通过漫游、WiFi、使用电缆连接到PC等多种方式连接到互联网。我希望能够控制这个过程。 - Caner
你的意思是控制设备接入互联网的方法吗? - Jong

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接