AndroidWIFI,CMWAP,CMNET的自动判断访问.pdf
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
在Android应用开发中,有时我们需要考虑不同网络环境下的数据访问问题。标题提到的"AndroidWIFI,CMWAP,CMNET的自动判断访问"是指在Android设备上如何根据不同的网络连接方式(如Wi-Fi、CMWAP和CMNET)来适配网络请求。在描述中提到了在开发过程中遇到的问题,即HTTP服务在某些网络环境下无法访问,尤其是移动网络中的CMWAP和CMNET。这两种网络接入点(APN)在连接互联网时有不同的设置和限制。 CMWAP和CMNET是中国移动提供的两种GPRS/EDGE网络接入方式。CMWAP通常用于通过手机浏览器访问WAP网站,它需要通过代理服务器,并且可能有特定的网络限制。而CMNET则提供更全面的互联网访问,可以看作是一种直接的Internet连接,无须代理。在Android应用中,如果不正确地配置了网络访问方式,可能会导致在CMWAP网络下无法正常工作。 给出的代码片段展示了如何在Android中实现自动判断和切换APN的方法。以下是一些关键知识点: 1. **ConnectivityManager**: 这是Android系统中用来管理网络连接的服务,可以通过`getSystemService(Context.CONNECTIVITY_SERVICE)`获取。它可以提供当前网络连接的信息,例如是否连接到Wi-Fi或移动数据。 2. **NetworkInfo**: 通过ConnectivityManager,可以获取到`NetworkInfo`对象,它包含了网络的状态信息,如类型(Wi-Fi、移动数据等)、是否可用等。 3. **WifiManager**和**TelephonyManager**: 分别用于管理Wi-Fi和移动电话服务。通过`getSystemService(Context.WIFI_SERVICE)`和`getSystemService(Context.TELEPHONY_SERVICE)`获取。 4. **ContentResolver**和**Uri**: 这是用来操作Android系统数据库的,比如查询或修改APN设置。`Uri.parse()`用于构建APN表的URI。 5. **APN(Access Point Name)**: 它是移动设备连接网络所需的配置信息,包括APN名称、代理、端口等。在Android中,APN信息存储在系统数据库中。 6. **getCurrentAPN()**: 这个函数用于获取当前激活的APN设置。它会查询`content://telephony/carriers/preferapn`这个URI,获取到当前的代理、APN、端口和是否为默认APN等信息。 7. **checkHasWapAPN()**: 这个函数检查系统中是否存在CMWAP的APN配置。它会查询`content://telephony/carriers`这个URI,遍历所有APN记录,寻找符合CMWAP特征的记录(如特定的代理和端口)。 8. **BroadcastReceiver**: 可以监听网络状态变化的广播,当网络连接发生改变时,可以自动调整应用程序的行为。 9. **IntentFilter**: 用于定义BroadcastReceiver接收的Intent类型,可以设置为`ACTION_CONNECTION_CHANGED`来监听网络连接的变化。 10. **AlertDialog**: 在需要向用户显示信息或确认操作时,可以使用对话框组件。 在实际开发中,开发者应该根据应用的需求来判断和选择合适的网络连接方式,确保在各种网络环境下都能正常工作。例如,如果应用需要不受限制的互联网访问,应当首选Wi-Fi或CMNET;而在只允许使用CMWAP的场合,可能需要通过代理设置来适应。同时,为了提升用户体验,还可以添加网络状态提示或自动切换功能,确保用户始终能接收到数据服务。
- 粉丝: 17
- 资源: 26万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助