android开发:android.net包介绍
android.net
是 Android 提供的一个包,包含了与网络相关的类和接口,用于处理网络连接、URI 操作、Wi-Fi 管理等功能。它是 Android 开发中实现网络功能的重要工具之一。
主要功能
-
网络连接管理:
- 提供类和方法来检查网络状态、连接类型等。
- 例如:
ConnectivityManager
、NetworkInfo
。
-
URI 操作:
- 提供工具类来解析和操作 URI。
- 例如:
Uri
类。
-
Wi-Fi 管理:
- 提供类和方法来管理 Wi-Fi 连接。
- 例如:
WifiManager
。
-
其他网络工具:
- 提供工具类来处理网络地址、代理设置等。
- 例如:
Network
、LinkProperties
。
核心类和接口
1. ConnectivityManager
用于管理网络连接状态。
-
主要方法:
getActiveNetworkInfo()
:获取当前活动的网络信息。getNetworkInfo(int networkType)
:获取指定类型的网络信息。requestNetwork(NetworkRequest request, NetworkCallback networkCallback)
:请求网络连接。
-
示例:
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); boolean isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting(); if (isConnected) { Log.d("Network", "设备已连接网络"); } else { Log.d("Network", "设备未连接网络"); }
2. Uri
用于表示和操作 URI(统一资源标识符)。
-
主要方法:
parse(String uriString)
:将字符串解析为 Uri 对象。getQueryParameter(String key)
:获取 URI 中的查询参数。buildUpon()
:构建 Uri 的修改版本。
-
示例:
Uri uri = Uri.parse("https://www.example.com/path?query=example"); String query = uri.getQueryParameter("query"); // 获取查询参数 Log.d("Uri", "Query: " + query);
3. WifiManager
用于管理 Wi-Fi 连接。
-
主要方法:
getConnectionInfo()
:获取当前 Wi-Fi 连接的信息。startScan()
:开始扫描可用的 Wi-Fi 网络。enableNetwork(int netId, boolean disableOthers)
:连接到指定的 Wi-Fi 网络。
-
示例:
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); String ssid = wifiInfo.getSSID(); // 获取当前连接的 Wi-Fi 名称 Log.d("Wifi", "Connected to: " + ssid);
4. Network
表示一个网络连接。
-
主要方法:
getSocketFactory()
:获取用于创建套接字的工厂。openConnection(URL url)
:打开一个网络连接。
-
示例:
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); Network network = cm.getActiveNetwork(); if (network != null) { URL url = new URL("https://www.example.com"); URLConnection connection = network.openConnection(url); InputStream inputStream = connection.getInputStream(); // 处理输入流 }
5. LinkProperties
表示网络连接的属性。
-
主要方法:
getLinkAddresses()
:获取网络地址列表。getRoutes()
:获取路由信息。
-
示例:
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); Network network = cm.getActiveNetwork(); if (network != null) { LinkProperties linkProperties = cm.getLinkProperties(network); List<LinkAddress> addresses = linkProperties.getLinkAddresses(); for (LinkAddress address : addresses) { Log.d("LinkProperties", "Address: " + address.toString()); } }
常见用途
-
检查网络状态:
- 使用
ConnectivityManager
检查设备是否连接到网络。
- 使用
-
解析 URI:
- 使用
Uri
类解析和操作 URI。
- 使用
-
管理 Wi-Fi:
- 使用
WifiManager
连接或断开 Wi-Fi 网络。
- 使用
-
网络请求:
- 使用
Network
和URLConnection
进行网络请求。
- 使用
示例代码
1. 检查网络连接
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting();
if (isConnected) {
Log.d("Network", "设备已连接网络");
} else {
Log.d("Network", "设备未连接网络");
}
2. 解析 URI
Uri uri = Uri.parse("https://www.example.com/path?query=example");
String query = uri.getQueryParameter("query");
Log.d("Uri", "Query: " + query);
3. 获取 Wi-Fi 信息
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
String ssid = wifiInfo.getSSID();
Log.d("Wifi", "Connected to: " + ssid);
总结
android.net
提供了丰富的类和接口来处理网络连接、URI 操作、Wi-Fi 管理等功能。- 常用的类包括
ConnectivityManager
、Uri
、WifiManager
等。 - 通过
android.net
,开发者可以轻松实现网络状态检查、URI 解析、Wi-Fi 管理等功能。