1. 获取手机卡的网络IP

//获取手机卡的网络private fun getHostIp() : String{var ip : InetAddress ?= nulltry {var en : Enumeration<NetworkInterface> = NetworkInterface.getNetworkInterfaces()while(en.hasMoreElements()){val ni : NetworkInterface = en.nextElement()val en_ip : Enumeration<InetAddress> = ni.inetAddresseswhile(en_ip.hasMoreElements()){ip = en_ip.nextElement()if(!ip.isLoopbackAddress && ip.hostAddress.indexOf(":") == -1)breakelseip = null}if(ip != null){break}}}catch (e : Exception){e.printStackTrace()}return ip.toString()}

2. 获取Wi-Fi局域网的IP地址

 //获取局域网Wi-Fi的ip地址@RequiresApi(Build.VERSION_CODES.O)private fun getLocalIpAddress(context: Context) : String{val wifiManager : WifiManager = context.getSystemService(Context.WIFI_SERVICE) as WifiManagerif(wifiManager != null){val wifiInfo : WifiInfo = wifiManager.connectionInfoval ipAddres : String = IntToIpv4.intToIpv4(wifiInfo.ipAddress)return ipAddres}return ""}

3. 获取Wi-Fi外网的IP地址

//获取外网IP地址(非本地局域网地址)的方法private fun getOutNetIp() : String {var ipAddress : String = ""try{val address : String = "http://ip.taobao.com/service/getIpInfo2.php?ip=myip"val url : URL = URL(address)val connection : HttpURLConnection = url.openConnection() as HttpURLConnectionconnection.useCaches = falseconnection.requestMethod = "GET"//设置浏览器ua 保证不出现503connection.setRequestProperty("user-agent","Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.7 Safari/537.36")if(connection.responseCode == HttpURLConnection.HTTP_OK){val inputStream : InputStream = connection.inputStream//将流转换为字符串val reader : BufferedReader = BufferedReader(InputStreamReader(inputStream))var tmpString : Stringval retJSON : StringBuilder = java.lang.StringBuilder()while((reader.readLine().also { tmpString = it }) != null){retJSON.append(tmpString+"\n")}val jsonObject : JSONObject = JSONObject(retJSON.toString())val code : String =jsonObject.getString("code")if(code.equals("0")){val date : JSONObject = jsonObject.getJSONObject("data")ipAddress = date.getString("ip")/* + "(" + data.getString("country")+ data.getString("area") + "区"+ data.getString("region") + data.getString("city")+ data.getString("isp") + ")"*/}else{Log.d("获取外网IP" ,"IP接口异常,无法获取IP地址")}}else{Log.d("获取外网IP", "网络连接异常,无法获取IP地址!");}}catch (e : Exception){e.printStackTrace()Log.e("获取外网IP", "获取IP地址时出现异常,异常信息是:"+e.toString());}return ipAddress}

4. 综合运用

@RequiresApi(Build.VERSION_CODES.O)fun getIpAddress(context : Context) : String{if (context == null){return "0.0.0.0"}val conManager : ConnectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManagertry{val info : NetworkInfo? = conManager.activeNetworkInfoif(info != null && info.isConnected){//3/4g网络if(info.type == ConnectivityManager.TYPE_MOBILE){return getHostIp()}else{//局域网return getLocalIpAddress(context)}}}catch (e : Exception){e.printStackTrace()}return "0.0.0.0"}

Android开发,获取当前手机网络地址相关推荐

  1. Android 开发获取当前手机厂商的方法和获取允许后台活动权限

    获取当前手机厂商: 1. if (checkPhoneFirm().equals(PhoneConstant.IS_HUAWEI)) {//华为 // getPermisstion("hua ...

  2. android 获取加速度传感器值,Android开发获取传感器数据的方法示例【加速度传感器,磁场传感器,光线传感器,方向传感器】...

    本文实例讲述了Android开发获取传感器数据的方法.分享给大家供大家参考,具体如下: package mobile.android.sensor; import java.util.List; im ...

  3. Android开发——查询/杀死手机里正在运行的进程

    0. 前言 以前有同学好像做过一个叫"自习君"的App,开启后自动检测用户这一天的自习时间,在学校里宣传广告还打了不少.其实实现原理非常简单,在SQlite数据库(也可以通过文件) ...

  4. android开发中磁场传感器,Android开发获取传感器数据的方法示例【加速度传感器,磁场传感器,光线传感器,方向传感器】...

    本文实例讲述了Android开发获取传感器数据的方法.分享给大家供大家参考,具体如下: package mobile.android.sensor; import java.util.List; im ...

  5. android 判断安装微信,Android开发中判断手机是否安装了QQ或者微信

    下面一段代码给大家分享了android中判断手机是否安装了qq或者微信,代码简单易懂,非常不错,具有参考借鉴价值,需要的的朋友参考下吧 public static boolean isWeixinAv ...

  6. (转)解决android开发人员,手机app图标显示不正确问题

    (转)解决android开发人员,手机app图标显示不正确问题 参考文章: (1)(转)解决android开发人员,手机app图标显示不正确问题 (2)https://www.cnblogs.com/ ...

  7. Android开发图标适配手机方案

    Android开发图标适配手机方案 在Android入门的时候并没有太多考虑上述问题,甚至在做案列的时候图片或者图标显示在手机上是比较模糊,这对于用户来说是非常影响使用舒适度的. 解决方案如下: 先准 ...

  8. android开发 判断当前手机是否是阿里 yunOS 系统

    android开发 判断当前手机是否是阿里 yunOS 系统 调用此方法, 返回ture,就是yunOS系统 返回false,就是非yunOS系统 @SuppressLint({"Defau ...

  9. android开发获取手机屏幕分辨率

    android开发基础过程中获取手机屏幕分辨率用来加载不同的UI,图片等,如何获取手机屏幕分辨率? DisplayMetrics displayMetrics=new DisplayMetrics() ...

  10. Android开发实战《手机安全卫士》——5.“高级工具”模块实现 获取经纬度 锁屏 卸载

    文章目录 1.手机防盗--接收短信播放音乐 2.手机防盗--定位方式 3.手机防盗--获取经纬度坐标 4.手机防盗--设备管理器使用 5.手机防盗--锁屏 & 数据清除 & 卸载 6. ...

最新文章

  1. python下载电脑版本不对_初学Python,因为某些原因电脑只能装3.1版本,现遇到这个小问题求解答...
  2. PowerShell 备份sharepoint站点命令
  3. 在线html差错,易查分在线编辑功能:发现错误随时修改,不用再重新上传表格!
  4. android-DNS服务找不到
  5. linux电脑管理员身份运行,在Ubuntu 20.04 LTS中添加“以管理员身份打开”
  6. 部署Java web项目到阿里云服务器
  7. sentos7查看网络配置_论各厂商设备之基础常用配置命令集
  8. nodejs的koa中cookie和session的使用,cookie和session的区别
  9. 光学相干断层成像术(OCT)
  10. HDU1150Machine Schedule(二分图最大匹配的DFS解法)
  11. nullnullHuge Pages
  12. Atitit 数据融合merge功能v3新特性.docx
  13. 人脸识别-YOLOv5模型目标检测
  14. Bex5文档服务器,不通过登录直接打开BeX5的首页和功能页的url是什么?
  15. 数字图像处理——基于matlab的车牌号识别
  16. 小程序css 如何引用图片,微信小程序实例:如何引入外部js的文件(图文)
  17. matlab imwareaopen,李祎 副教授
  18. 七年级上册计算机知识点总结,七年级上册数学知识点总结
  19. linux 查找文件是否含有某个字符串
  20. vscode前端常用插件

热门文章

  1. 河北大学适合计算机考研吗,河北大学考研难吗?一般要什么水平才可以进入?...
  2. Matlab fmincon函数用法
  3. 【深度好文】二维图像离散余弦变换
  4. react快速开始(一)-入门基础
  5. 计算机品牌调查表excel,如何用excel统计的调查问卷
  6. mipsarmaarch64-pwn初探
  7. Confluent Platform: 正式环境安装
  8. tomcat启动时闪退
  9. c语言的float阶码
  10. 名人故事之 Justin Frankel