首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

安卓,使用"Inet4Address.getLocalHost().getHostAddress();“访问设备IP地址抛出异常

在安卓开发中,使用"Inet4Address.getLocalHost().getHostAddress();"访问设备IP地址抛出异常的原因是该方法在安卓平台上不可用。在安卓中,获取设备IP地址需要使用其他方法。

一种常用的方法是使用WifiManager获取设备的IP地址。下面是一个示例代码:

代码语言:txt
复制
import android.content.Context;
import android.net.wifi.WifiManager;
import android.net.wifi.WifiInfo;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;

// 获取设备IP地址的方法
public String getDeviceIpAddress(Context context) {
    String ipAddress = "";
    try {
        // 获取WifiManager实例
        WifiManager wifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
        
        // 检查Wifi是否已连接
        if (wifiManager.isWifiEnabled()) {
            // 获取WifiInfo实例
            WifiInfo wifiInfo = wifiManager.getConnectionInfo();
            
            // 获取IP地址
            int ip = wifiInfo.getIpAddress();
            
            // 转换IP地址为字符串形式
            ipAddress = String.format("%d.%d.%d.%d",
                    (ip & 0xff), (ip >> 8 & 0xff), (ip >> 16 & 0xff), (ip >> 24 & 0xff));
        } else {
            // 获取移动网络连接的IP地址
            ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
            if (networkInfo != null && networkInfo.isConnected()) {
                if (networkInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
                    // 获取移动网络IP地址
                    ipAddress = getMobileIpAddress();
                }
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return ipAddress;
}

// 获取移动网络IP地址的方法
private String getMobileIpAddress() {
    try {
        for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
            NetworkInterface networkInterface = en.nextElement();
            for (Enumeration<InetAddress> enumIpAddr = networkInterface.getInetAddresses(); enumIpAddr.hasMoreElements();) {
                InetAddress inetAddress = enumIpAddr.nextElement();
                if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address) {
                    return inetAddress.getHostAddress();
                }
            }
        }
    } catch (SocketException e) {
        e.printStackTrace();
    }
    return "";
}

这段代码首先检查设备是否连接到了Wifi网络,如果是,则使用WifiManager获取WifiInfo实例,进而获取IP地址。如果设备没有连接到Wifi网络,则使用ConnectivityManager获取移动网络连接的IP地址。

推荐的腾讯云相关产品:腾讯云移动推送(https://cloud.tencent.com/product/umeng_push)、腾讯云物联网通信(https://cloud.tencent.com/product/iotexplorer)、腾讯云云服务器(https://cloud.tencent.com/product/cvm)。

请注意,以上代码仅提供了一种获取设备IP地址的方法,实际开发中可能会根据具体需求和网络环境进行调整。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【Java 网络编程】客户端 Socket 创建

= new Socket(Inet4Address.getLocalHost(), 8888); IV 创建 Socket 时直接指定服务器地址和端口号 并绑定本地IP地址和端口号 ---- 1....IP 地址 : 客户端 IP 地址 和 服务器端 IP 地址是一样的 , 都是本地 IP 地址 ; 2. 端口号 : 服务器端端口号是 8888 , 客户端端口号是 8887 ; 3....自动连接服务器 : 该 Socket 对象创建成功后 , 会自动连接 , 如果连接失败 , 会抛出异常 , 该 Socket 创建也会失败 ; Socket socket = new Socket("192.168.1.100...8888, Inet4Address.getLocalHost(), 8887); 不推荐使用该方法 , 在 Socket 连接之前 , 要先进行各种参数设置 , 这种情况下无法进行详细的参数配置 ,...连接使用的都是默认参数 ; V 创建无参 Socket 绑定地址 ---- 创建 Socket 对象时 , 推荐使用无参构造函数创建对象 , 并进行各种参数设置 , 在 Socket 创建之后 ,

1.6K30

1--网络编程之获取IP地址

关于IP 1.IP 网际协议地址(Internet Protocol Address) 2.是TCP/IP协议族中网络层的协议 3.互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异...3.每个逻辑地址可供一个设备连接到Internet,通过这个逻辑地址就能寻找到某个设备。 ---- 获取手机的IPv4 ?...ipv4测试.png 仅开启移动数据时: {ccmni0=10.66.253.0, lo=127.0.0.1} 开启手机热点时: {ccmni0=10.66.253.0, lo=127.0.0.1...=d8:15:0d:4b:b7:a0} 可见手机流量走的是:ccmni0名称的ip 手机热点会产生一个ip: ap0名称的ip 都会有一个本地的ip地址:127.0.0.1 ---- 代码实现...debug查看网络信息.png ---- 后记:捷文规范 1.本文成长记录及勘误表 项目源码 日期 备注 V0.1--无 2018-10-14 1--网络编程之获取IP地址 2.更多关于我 笔名

2.3K20

数十万安设备存在漏洞,你的手机还是你的吗!!!

设备经常卡死 广告频繁弹出 设备异常安装应用程序 应用程序经常奔溃 检查过你的设备 是否开启了开发者模式? ? 什么是开发者模式? 系统有一个隐藏的功能叫做开发者选项。...它可为设备操作提供便利,如安装和调试应用,并提供对 Unix shell(可用来在模拟器或连接的设备上运行各种命令)的访问。...恒SuMap平台已发现全球大约 15万台设备的adb服务5555端口暴露在互联网上,其中中国约4.8万台设备暴露在公网。...其中设备包括小米手机、一加手机、三星手机、LG手机、华为机顶盒、中兴机顶盒等设备。 检测方法 1.检查设备对应开发者开关是否开启 ?...通常情况可以通过手机设置中看到开发者选项,由于各个品牌手机不同,所以查看方法可能不一样。 2.通过adb命令方式检测 命令中使用IP地址以实际环境中设备IP地址修改。

76720

永久免费内网穿透很简单,一看就明白(长文)

诸如此类的难题众多,但解决方法其实很简单,那就是使用软件或者自己手写一个,可以支持访问我的电脑上的微信支付接口,从而实现这一系列的简易操作。...填写自己要穿透的应用名称和端口号,如果需要获取原访问IP最好是选择Web应用。提交提交就可以了。...打开神互联软件主界面,右键选择外网访问 如果需要绑定域名访问的话也很简单,这里不多说。...();//获取IP地址 byte[] bytes = address.getAddress();//获取字节数组形式的IP地址,以点分隔的四部分 //获取其他主机的InetAddress实例 InetAddress...4、主机2发送一个命令告诉主机A,我要求与其他设备进行连接,请求协助进行穿透。 5、主机A接收到主机2的命令之后,会返回主机1的外网地址和端口给主机2,同时把主机2的外网地址和端口发送给主机1。

1K20

几款永久免费内网穿透,好用且简单(内网穿透教程)

诸如此类的难题众多,但解决方法其实很简单,那就是使用软件或者自己手写一个,可以支持访问我的电脑上的微信支付接口,从而实现这一系列的简易操作。...填写自己要穿透的应用名称和端口号,如果需要获取原访问IP最好是选择Web应用。提交提交就可以了。...打开神互联软件主界面,右键选择外网访问 如果需要绑定域名访问的话也很简单,这里不多说。...();//获取IP地址 byte[] bytes = address.getAddress();//获取字节数组形式的IP地址,以点分隔的四部分 //获取其他主机的InetAddress实例 InetAddress...4、主机2发送一个命令告诉主机A,我要求与其他设备进行连接,请求协助进行穿透。 5、主机A接收到主机2的命令之后,会返回主机1的外网地址和端口给主机2,同时把主机2的外网地址和端口发送给主机1。

3.8K20

】在使用HTTP协议的最佳实践

使用HTTP协议的最佳实践 在开发应用时,网络通信是一个不可或缺的方面。HTTP协议是许多应用程序数据交换的基础,因此了解如何正确地使用它对于确保应用的性能和安全性至关重要。...选择合适的HTTP客户端 提供了多种HTTP客户端,包括HttpURLConnection、OkHttp和Retrofit等。每个客户端都有其优势和特点。...仔细查看和使用。 有关常见问题解答的详细信息. 这段代码使用sun.net.util.NetworkUtils.getAllByName()方法来获取www.example.com的IP地址。...结论 在应用开发中,正确使用HTTP协议对于提供良好的用户体验和保护用户数据至关重要。通过遵循上述最佳实践,开发者可以确保其应用程序在网络通信方面运行高效且安全。...希望这篇文章能够帮助您理解在使用HTTP协议的重要性以及如何实现最佳实践。

5110

AutoJs6 – v6.2.0 – JavaScript 自动化工具 (Auto.js 二次开发)

issue #29 修复 高版本系统点击快速设置面板中相关图标后面板可能无法自动收起的问题 (试修) issue #7 修复 高版本系统可能出现部分页面与通知栏区域重叠的问题 修复 10...修复 图标选择页面的图标元素排版异常 修复 文本编辑器启动时可能因夜间模式设置导致闪屏的问题 (试修) 修复 文本编辑器设置字体大小时可用最大值受限的问题 修复 部分系统脚本运行结束时日志中无法统计运行时长的问题...修复 使用悬浮窗菜单关闭悬浮窗后重启应用时悬浮窗依然开启的问题 修复 布局层次分析时长按列表项可能导致弹出菜单溢出下方屏幕的问题 修复 7.x 系统在夜间模式关闭时导航栏按钮难以辨识的问题...(迁移至 AndroidX) 优化 设置页面支持长按设置选项获取详细信息 优化 夜间模式增加 “ 跟随系统 ” 设置选项 ( 9 及以上) 优化 应用启动画面适配夜间模式 优化 应用图标增加数字标识以提升多个开源版本共存用户的使用体验...优化 客户端及服务端建立连接后在主页抽屉显示对应设备IP 地址 优化 部分全局对象及内置模块增加覆写保护 (参阅 项目文档 > 全局对象 > 覆写保护) 优化 importClass 和 importPackage

4.2K20

Android开发获取手机内网IP地址与外网IP地址的详细方法与源码实例

在进行Android应用开发过程中,有时候会遇到获取当前Android设备使用的网络IP地址的场景,有时候需要本地的网络IP地址,即局域网地址,更多的时候是需要当前网络的真实的对外IP地址,即真实的网络地址...,如大数据分析时往往需要Android设备上传本地的外网地址。...获取Android设备的外网地址,即当前Wifi网络真正的网络地址,也即是网络运营商分配给用户的IP地址。...获取外网地址的原理:通过访问外网网站,从网站返回的数据中解析本地的IP地址。PS:在本地是无法获取到外网的IP地址的,需要借助服务器。...地址是:" + ipAddress); } else { Log.e(TAG, "IP接口异常,无法获取IP地址!")

16K30

BUF大事件丨StrandHogg 2.0漏洞影响10亿设备;泰国移动运营商泄露83亿记录

StrandHogg 2.0漏洞影响超过10亿台设备 近日,安全研究人员披露了一种新型严重漏洞,该漏洞编号为CVE-2020-0096,因其与Strandhogg漏洞相似,又被称为“StrandHogg2.0...”,影响超10亿台设备。...该漏洞位于的多任务处理系统中,可被设备上安装的流氓应用程序利用,从而构成合法应用程序,以试图从受害者那里获得更高的权限。...所幸,在今年5月份,谷歌已经发布安全补丁,用户应尽快更新设备,以免受到恶意攻击的影响。 ?...通过泄露的数据查询DNS记录,就能看到每个IP访问地址,能轻易建立起一个人的用户画像,让许多人的网络隐私暴露到了公共场合。

1.1K10

Java中InetAddress的使用(一):域名解析【享学Java】

本地需要向DNS服务器发送查询的请求,然后服务器根据一系列的操作,返回对应的IP地址,为了提高效率,通常本地会缓存一些主机名与IP地址的映射,这样访问相同的地址,就不需要重复发送DNS请求了。...地址:" + inet.getHostAddress()); // IP地址:127.0.0.1 // 不存在的域名 抛出异常:java.net.UnknownHostException: aaaaaa.com...地址:" + inet.getHostAddress()); } 对于此部分的域名解析,有如下注意事项: 对于外网域名的解析(如www.baidu.com),你的机器必须能够访问外网才能解析到IP地址。...地址:" + inet.getHostAddress()); // IP地址:61.135.169.125 } 以上两种方式:通过IP构造一个InetAddress对象,因此你获取它的IP地址时将不再经过...地址:" + inet.getHostAddress()); // IP地址:2.0.0.137 } 为何是2.0.0.137这个地址

7.1K42

【Java 网络编程】服务器端 ServerSocket 配置 ( 端口复用 | 缓冲区设置 | 超时时间 | 性能权重 | 端口绑定 )

accept 方法接收客户端的连接 , 此时如果有 10 个以内的客户端连接 , 这 10 个连接都在缓冲区中等待 , 如果出现第 11 个客户端连接 , 此时客户端就会抛出异常 ; 注意这个异常是在客户端触发的...; //服务器端绑定本地的 IP 地址和端口号 serverSocket.bind(new InetSocketAddress(Inet4Address.getLocalHost(), 8888),...(true); Socket 连接在建立时 , 会使用之前绑定本地的 IP 地址和端口号 , 这个端口号在使用之后 , 2 分钟之内不允许再次使用 ; 进行了该设置之后 , 可以在连接关闭之后 , 马上使用该本地...IP 地址和端口号 ; III ServerSocket 设置缓冲区大小 ---- 1....该超时时间没有实际的概念 , 用于设置与阻塞相关操作的超时时间 , ServerSocket 中只有 accept 操作会有阻塞 , 设置了 2 秒阻塞时间 , 如果 accept 阻塞超过 2000 毫秒 , 就会抛出异常

88120

接口测试|Fiddler设置手机抓包

Fiddler设置手机端抓包手机抓包第一步:配置电脑和的相关设置1、手机和fiddler位于同一个局域网内;首先从fiddler处获取到ip地址和端口号图片点击online,最后一行就是ip地址...:http://ip地址:88882.点击页面底部FiddlerRoot certificate 下载证书图片3.打开设置>更多设置>系统安全>加密与凭据>从存储设备安装选择下载好的FiddlerRoot.cer...进行安装4.浏览器打开https://www.baidu.com/,已经可以抓取HTTPS包了IOS手机抓包和的步骤差不多:1.点击Tools——Fiddler Options ——connections2....勾选Allow Remote computes to connect3.重启Fiddler4.确保防火墙允许Fiddler 进程可以远程连接5.IOS设备连接WIFI,确保ios设备可以访问到http...请求了12.安装证书解密HTTPS:在ios设备打开浏览器,访问http://ipv4:8888/13.点击Fiddler Echo Service 页面底部FiddlerRoot certificate

1.2K30

【调试】939- 5个Chrome调试混合应用的技巧

一、调试应用 在进行混合应用开发过程中,经常需要在应用中调试 H5 项目的代码,这里我们就需要了解应用如何在 Chrome 上进行调试。...准备工作 需要准备有一下几个事项: 包必须为可调试包,如果不可以调试,可以找原生的同事提供; 手机通过数据线连接电脑,然后开启“开发者模式”,并启用“USB 调试”选项。 2....,然后重新访问“chrome://inspect/#devices”即可。...三、快速断点报错信息 在 Sources 面板中,我们可以开启异常自动断点的开关,当我们代码抛出异常,会自动在抛出异常的地方断点,能帮助我们快速定位到错误信息,并提供完整的错误信息的方法调用栈。 ?...使用场景: 需要调试抛出异常的情况。 使用方式: 在 Sources 面板中,开启异常自动断点的开关。 ?

2.1K20

设备指纹也能检测业务风险?

顶象防御云业务安全中心发布的一项数据显示,2022年社交平台的业务风险,三成来自平台。平台是如何统计出来的?其中,设备指纹是重要的一项。 什么是设备指纹?...,访问业务的设备是正常用户还是恶意用户, 识别机器攻击。...业务安全情报的六大功能模块 近日,顶象防御云业务安全情报上线了首个“恶意设备指纹”查询库,只需要输入设备指纹信息,就可以查询该设备的操作系统、设备型号、访问时间、IP地址、来源乃至Token信息。...利用机器学习、关联网络技术对对千万级IP数据进行分析和挖掘,输出IP地址评分,挖掘出关联风险设备、关联风险IP、关联群体、近7-30天和最近一次的团伙拒绝率、占比等指标,助力反欺诈团队掌握黑产行为,制定针对性防控策略...基于对风险数据的人群画像、行为评分、关联关系分析、团伙欺诈挖掘、场景风险特征分析,以及专家专业经验的判断和定位后,提炼总结分析出电信诈骗风险、IP地址风险、设备风险、涉毒涉诈风险、交易风险以及不同行业风险的业务安全情报

1.6K10

【Java 网络编程】TCP 数据传输示例 ( 客户端参数设置 | 服务器端参数设置 | ByteBuffer 存放读取数据类型 )

Socket 对象关联的 InputStream 输入流执行 read() 操作时 , 其阻塞时间为这个超时时间 // 如果超过了该时间还没有收到任何数据 , 就会抛出异常...设置是否可以复用 Socket 绑定的地址和端口号 // Socket 连接在建立时 , 会使用之前绑定本地的 IP 地址和端口号 //...这个端口号在使用之后 , 2 分钟之内不允许再次使用 // 进行了该设置之后 , 可以在连接关闭之后 , 马上使用该本地 IP 地址和端口号 socket.setReuseAddress...设置是否可以复用 Socket 绑定的地址和端口号 // Socket 连接在建立时 , 会使用之前绑定本地的 IP 地址和端口号 //...这个端口号在使用之后 , 2 分钟之内不允许再次使用 // 进行了该设置之后 , 可以在连接关闭之后 , 马上使用该本地 IP 地址和端口号 serverSocket.setReuseAddress

76510

解读Android 12首个开发者预览版

在之前版本的系统下,用户启动的沉浸模式,默认需要的手势操作是:从屏幕侧方滑入,退出沉浸模式,然后再返回上一个界面。...Android 12则更进一步限制了所有非系统应用程序对设备MAC地址访问,无论目标API级别如何。...不配置的话,在 12 设备上将不能安装,logcat 也会打印错误日志: Targeting S+ (version 10000 and above) requires that an explicit...需要声明 PendingIntent.FLAG_MUTABLE 或者 PendingIntent.FLAG_IMMUTABLE flag,否则系统会抛出异常 IllegalArgumentException...也欢迎更多的开发者和我们一起交流和探索Android及移动开发新技术,共同建设更好的开发生态。 *本文图片来源于Android官网

1.8K30
领券