做一个应用要支持所有网络,请教高手了! 做一个应用要支持这些网络 : wifi, 联通电信移动的3G, 移动的gprs(包括cmwap和cmnet接入点)。是不是实现逻辑是这样的 : 先判断当前是否是cmwap接入点,如果是的话设置代理访问,否则其他网络全部都直接访问。请教高手有做个类似的么,这么连接有无问题? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public String getIpAddress(){ String ipAddress = ""; try{ ipAddress = wifiIpAddress(); if(ipAddress!=null&&ipAddress.trim().length()>0){ }else{ ipAddress = this.GPRSIpAddress(); } }catch(Exception ex){ } return ipAddress;//有IP返回就联网 } private String wifiIpAddress(){ String ip = ""; //获取wifi服务 WifiManager wifiManager = (WifiManager)(context).getSystemService(Context.WIFI_SERVICE); //判断wifi是否开启 if (wifiManager.isWifiEnabled()) { //wifiManager.setWifiEnabled(true); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); int ipAddress = wifiInfo.getIpAddress(); ip = intToIp(ipAddress); } return ip; } private String intToIp(int i) { return (i & 0xFF ) + "." + ((i >> 8 ) & 0xFF) + "." + ((i >> 16 ) & 0xFF) + "." + ( i >> 24 & 0xFF) ; } private String GPRSIpAddress(){ try{ for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();){ NetworkInterface intf = en.nextElement(); for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();){ InetAddress inetAddress = enumIpAddr.nextElement(); if (!inetAddress.isLoopbackAddress()){ return inetAddress.getHostAddress().toString(); } } } }catch (SocketException ex){ Log.d("GPRSIpAddress IpAddress", ex.toString()); } return ""; }另外配上<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 这三个权限 danielinbiti,你这段代码只处理了gprs和wifi, 那么3G呢? danielinbiti, 你的代码逻辑只是判断了wifi和gprs, gprs那块是否已经包含了3g了。如果我要区分wifi, gprs, 联通的3G, 移动的3G和 电信的3G, 能做到么? 这几种网络包括3G网络至于你说要区分开来,这没试过,获取了IP后,要区分是哪个运营商的应该不是难题。你的情况,你最好拿真机测一下网络,能够所有异常都考虑到还是要靠实践检验的。 谁能给我个安卓源码 为什么遍历Activity layout中的控件时取不值 高手请进 ApiDemos的使用问题,如何知道*.java调用的是哪个layout xml? 用什么软件编android软件啊?推荐几本书看看呗。 adt安装 Android中如何动态加载class android小白的测试程序频频出错 http中post json求助 MVP设计模式的源码,有一段逻辑看不懂,求解 Android浏览器开发的问题 SurfaceHolder的lockCanvas(Rect rect)问题
String ipAddress = "";
try{
ipAddress = wifiIpAddress();
if(ipAddress!=null&&ipAddress.trim().length()>0){
}else{
ipAddress = this.GPRSIpAddress();
}
}catch(Exception ex){
}
return ipAddress;//有IP返回就联网
}
private String wifiIpAddress(){
String ip = "";
//获取wifi服务
WifiManager wifiManager = (WifiManager)(context).getSystemService(Context.WIFI_SERVICE);
//判断wifi是否开启
if (wifiManager.isWifiEnabled()) {
//wifiManager.setWifiEnabled(true);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int ipAddress = wifiInfo.getIpAddress();
ip = intToIp(ipAddress);
}
return ip;
}
private String intToIp(int i) {
return (i & 0xFF ) + "." +
((i >> 8 ) & 0xFF) + "." +
((i >> 16 ) & 0xFF) + "." +
( i >> 24 & 0xFF) ;
}
private String GPRSIpAddress(){
try{
for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();){
NetworkInterface intf = en.nextElement();
for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();){
InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress()){
return inetAddress.getHostAddress().toString();
}
}
}
}catch (SocketException ex){
Log.d("GPRSIpAddress IpAddress", ex.toString());
}
return "";
}另外配上
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
这三个权限
你这段代码只处理了gprs和wifi, 那么3G呢?
如果我要区分wifi, gprs, 联通的3G, 移动的3G和 电信的3G, 能做到么?
至于你说要区分开来,这没试过,获取了IP后,要区分是哪个运营商的应该不是难题。你的情况,你最好拿真机测一下网络,能够所有异常都考虑到还是要靠实践检验的。