android模拟ip地址,安卓 获取手机IP地址的实现代码
1.获取手机IP地址的代码:
public static String getLocalIpAddress(){
try{
for (Enumeration en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
NetworkInterface intf = en.nextElement();
for (Enumeration enumIpAddr = intf
.getInetAddresses(); enumIpAddr.hasMoreElements();) {
InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress()) {
return inetAddress.getHostAddress().toString();
}
}
}
}catch (SocketException e) {
// TODO: handle exception
Utils.log("WifiPreference IpAddress---error-" + e.toString());
}
return null;
}
但是在4.0 下 会出现类似fe80::b607:f9ff:fee5:487e的IP地址, 这个是IPV6的地址,我们需要获得是的IPV4的地址,所以要在上诉代码中加一个判断
InetAddressUtils.isIPv4Address(inetAddress.getHostAddress());
2.完整代码如下:
public static String getLocalIpAddress(){
try{
for (Enumeration en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
NetworkInterface intf = en.nextElement();
for (Enumeration enumIpAddr = intf
.getInetAddresses(); enumIpAddr.hasMoreElements();) {
InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress() && InetAddressUtils.isIPv4Address(inetAddress.getHostAddress())) {
return inetAddress.getHostAddress().toString();
}
}
}
}catch (SocketException e) {
// TODO: handle exception
Utils.log("WifiPreference IpAddress---error-" + e.toString());
}
return null;
}
获取android手机当前ip地址
public class NetWorkUtils {
/**
* 检查网络是否可用
*
* @param paramContext
* @return
*/
public static boolean checkEnable(Context paramContext) {
boolean i = false;
NetworkInfo localNetworkInfo = ((ConnectivityManager) paramContext
.getSystemService("connectivity")).getActiveNetworkInfo();
if ((localNetworkInfo != null) && (localNetworkInfo.isAvailable()))
return true;
return false;
}
/**
* 将ip的整数形式转换成ip形式
*
* @param ipInt
* @return
*/
public static String int2ip(int ipInt) {
StringBuilder sb = new StringBuilder();
sb.append(ipInt & 0xFF).append(".");
sb.append((ipInt >> 8) & 0xFF).append(".");
sb.append((ipInt >> 16) & 0xFF).append(".");
sb.append((ipInt >> 24) & 0xFF);
return sb.toString();
}
/**
* 获取当前ip地址
*
* @param context
* @return
*/
public static String getLocalIpAddress(Context context) {
try {
// for (Enumeration en = NetworkInterface
// .getNetworkInterfaces(); en.hasMoreElements();) {
// NetworkInterface intf = en.nextElement();
// for (Enumeration enumIpAddr = intf
// .getInetAddresses(); enumIpAddr.hasMoreElements();) {
// InetAddress inetAddress = enumIpAddr.nextElement();
// if (!inetAddress.isLoopbackAddress()) {
// return inetAddress.getHostAddress().toString();
// }
// }
// }
WifiManager wifiManager = (WifiManager) context
.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int i = wifiInfo.getIpAddress();
return int2ip(i);
} catch (Exception ex) {
return " 获取IP出错鸟!!!!请保证是WIFI,或者请重新打开网络!\n" + ex.getMessage();
}
// return null;
}
}
Android中获取本机ip地址和MAC地址
通过InetAddress.getLocalHost()得到始终是“127.0.0.1”,要想得到真正的网络ip地址要通过下面的方法:
首先新建一个工程,修改AndroidManifest.xml文件增加用户权限,如下:
//必写
//必写
主要函数代码如下:
// 得到本机ip地址
public String getLocalHostIp()
{
String ipaddress = "";
try
{
Enumeration en = NetworkInterface
.getNetworkInterfaces();
// 遍历所用的网络接口
while (en.hasMoreElements())
{
NetworkInterface nif = en.nextElement();// 得到每一个网络接口绑定的所有ip
Enumeration inet = nif.getInetAddresses();
// 遍历每一个接口绑定的所有ip
while (inet.hasMoreElements())
{
InetAddress ip = inet.nextElement();
if (!ip.isLoopbackAddress()
&& InetAddressUtils.isIPv4Address(ip
.getHostAddress()))
{
return ipaddress = "本机的ip是" + ":" + ip.getHostAddress();
}
}
}
}
catch (SocketException e)
{
Log.e("feige", "获取本地ip地址失败");
e.printStackTrace();
}
return ipaddress;
}
// 得到本机Mac地址
public String getLocalMac()
{
String mac = "";
// 获取wifi管理器
WifiManager wifiMng = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfor = wifiMng.getConnectionInfo();
mac = "本机的mac地址是:" + wifiInfor.getMacAddress();
return mac;
}
Android 获取wifi的IP地址
WifiManager wifimanage=(WifiManager)context.getSystemService(Context.WIFI_SERVICE);//获取WifiManager
//检查wifi是否开启
if(!wifimanage.isWifiEnabled()) {
wifimanage.setWifiEnabled(true);
}
WifiInfo wifiinfo= wifimanage.getConnectionInfo();
String ip=intToIp(wifiinfo.getIpAddress());
//将获取的int转为真正的ip地址,参考的网上的,修改了下
private String intToIp(int i) {
return (i & 0xFF)+ "." + ((i >> 8 ) & 0xFF)? + "." + ((i >> 16 ) & 0xFF) +"."+((i >> 24 ) & 0xFF );
}
OK,这样就好了吗?呵呵,别忘记加上权限
总结:大家可以对比一下,Android 获取手机 IP 地址的方法,以免在编程的过程中造成不必要的问题.
android模拟ip地址,安卓 获取手机IP地址的实现代码相关推荐
- php获取手机ip地址,获取手机的ip地址
获取手机的ip地址 2014年10月14号 发表于:评论 () 热度:1287 随着手机功能的不断完善,手机网站的开发日趋简单,所以很多人都趋于用html不限定宽度的方式来写电脑网页.同样的,手机浏览 ...
- 如何正确获取手机IP地址
随着手机功能的不断完善,手机网站的开发日趋简单,所以很多人都趋于用html不限定宽度的方式来写电脑网页.同样的,手机浏览器也不单单只支持wml格式的文件.除了不支持JS脚本程序以外,和电脑访问几乎没有 ...
- android获取ip方法,Android开发准确获取手机IP地址的两种方式
最近看了好多网上获取IP地址的例子,发现好多都不完全准确,这里我写一下获取ip地址的两种方式. 比如微信支付,后台在做接口的时候,要求App端传入IP地址,我们需要判断是网络环境,WI-FI还是3G, ...
- android socket gprs 与 wifi 网络切换,Android应用开发Android 获取手机Wifi地址和Gprs地址,反射修改Wifi地址...
Android 获取手机Wifi地址和Gprs地址,反射修改Wifi地址. //查看Wifi地址publicString getWifiIpAddress() { //获取wifi服务WifiMa ...
- android+手机mac地址,Android 获取手机Mac地址,手机名称
/** * 获取手机mac地址 * 错误返回12个0 */ public static String getMacAddress(Context context) { // 获取mac地址: Stri ...
- 安卓获取手机视频和图片
安卓获取手机视频和图片 获取手机本地视频 首先需要获得手机内存权限 在AndroidManifest.xml中添加代码,获得读取权限 android.permission.READ_EXTERNAL_ ...
- html5获取gps坐标,html5获取手机GPS信息的示例代码
html5获取手机GPS信息的示例代码function getLocation() { if (navigator.geolocation) { navigator.geolocation.getCu ...
- Java获取iphone手机gps信息_html5获取手机GPS信息的示例代码分享
html5获取手机GPS信息的示例代码分享:function getLocation() { if (navigator.geolocation) { navigator.geolocation.ge ...
- php获取接口url地址,PHP 获取完整URL地址
/** * 获取当前完整URL * @return string */ function get_url() { $sys_protocal = isset($_SERVER['SERVER_PORT ...
最新文章
- 太强了!Kaggle竞赛宝典方案汇总
- python库有什么用_Python程序员必知什么 常用的Python库有哪些
- Extjs嵌入html
- java后端做教育视频网站源码_【Java并发面试点】看这一篇应该是够了
- 转 Linux调优方案,sysctl.conf的设置
- 游戏笔记本计算机购买,游戏笔记本电脑推荐 三分钟售罄TA为何如此火爆?
- 《Java 8实战》读书笔记
- 开源C++/C代码检查工具
- 超声波皮肤注入器行业研究及十四五规划分析报告
- DIV布局末大作业:美食网站设计——餐饮美食-咖啡(5页) HTML5网页设计成品_学生DW静态食品网页设计_web课程设计网页制作
- HDU 2000 Java 奇怪的jio
- 数据结构:新冠病毒检测
- 电脑怎么录屏幕视频带声音?电脑录屏教程介绍
- 关于Navicat到期的办法(亲测有效)
- 计算机开机屏幕英语,电脑开机进不了系统,屏幕一堆英文数字怎么办?别急有方法...
- 从程序员的观点看 汉字国标与Unicode
- MySQL查询报错Unknown column ‘new_edition‘ in ‘IN/ALL/ANY subquery‘
- 编译相关(非原创 读书笔记)
- 机器人越来越聪明了,是否应该赋予TA更多的权利? | 讨论
- VVC 算法描述 R2002(VTM 9) IBC部分 机器翻译