android程序获取WIFI的IP地址和MAC地址

转自:http://my.oschina.net/chenj/blog/68680

 

近日在鼓捣这玩意,拿出来大家分享一下,代码比较简单,如果有不懂的再问

 <Button android:id="@+id/btn"android:text="获取IP"android:layout_width="fill_parent"android:layout_height="wrap_content"android:onClick="onclick"/><EditText android:id="@+id/ip_txt"android:layout_width="fill_parent"android:layout_height="wrap_content"/><EditText android:id="@+id/mac_txt"android:layout_width="fill_parent"android:layout_height="wrap_content"/>

//这里是权限,添加为AndroidManifest.xml的<manifest>的子节点

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission><uses-permission android:name="android.permission.INTERNET"></uses-permission>

//接下来就是正文(注意IPV4与IPV6的区别,见注释)

package com.wifi;import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;import android.app.Activity;
import android.content.Context;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity {public static String IP;             //本机IPpublic static String MAC;            //本机MAC
    Button btn=null;EditText ip_txt=null;EditText mac_txt=null;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);btn=(Button)findViewById(R.id.btn);ip_txt=(EditText)findViewById(R.id.ip_txt);mac_txt=(EditText)findViewById(R.id.mac_txt);}public void onclick(View v){switch (v.getId()) {case R.id.btn:IP = getLocalIpAddress();  //获取本机IPMAC = getLocalMacAddress();//获取本机MAC
            ip_txt.setText(IP);mac_txt.setText(MAC);break;}}public String getLocalIpAddress() {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()&&(inetAddress instanceof Inet4Address)) { // 这是只获取IPV4的,如果要获取IPV6的,改成instanceof Inet6Addressreturn inetAddress.getHostAddress().toString();}}}} catch (SocketException ex) {Log.e("WifiPreference IpAddress", ex.toString());}return null;}public String getLocalMacAddress() {WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);WifiInfo info = wifi.getConnectionInfo();return info.getMacAddress();}
}

另一种方法:

WifiManager wifi_service = (WifiManager)getSystemService(WIFI_SERVICE);//检查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 );
} 

关于WifiManager的用法:http://blog.csdn.net/zd_1471278687/article/details/12158367

转载于:https://www.cnblogs.com/qrlozte/p/3670832.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/432666.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机d,计算机词汇d

data block 数据块data connection 数据连接Data Control Language (DCL) 数据控制语言 (DCL)data definition 数据定义data definition language (DDL) 数据定义语言 (DDL)data dictionary 数据字典data dictionary view 数据字典视图data explosion 数据爆炸data file 数据文…

a5d2 mac 驱动分析

2.6内核以后的多数驱动都是基于平台总线驱动模型(platform)&#xff0c;对于平台总线来说&#xff0c;无非是两块组成 platform_driver和platform_device&#xff0c;在a5d2的bsp中&#xff0c;因为引入了device tree&#xff0c;因此&#xff0c;代码里已经看不到 platform_…

10以内的分解与组成怎么教_【一年级数学】(上)10以内的分与合技巧及练习题...

《10以内的分与合》知识点数的组成&#xff1a;一个数(1除外)分成几和几&#xff0c;先把这个数分成1和几&#xff0c;依次分到几和1为止。例如&#xff1a;5的组成有1和4、2和3、3和2、4和1。把一个数分成几和几时&#xff0c;要有序地进行分解&#xff0c;防止重复或遗漏。《…

linux下swftools 的配置

1、安装所需的库和组件。机器之前安装过了&#xff0c;主要安装的是下面几个组件。如果不安装会提示machine x86_64-unknown-linux not recognizedyum install gcc* automake zlib-devel libjpeg-devel giflib-devel freetype-devel2、下载编译安装swftools。wget http://www.s…

交通与计算机杂志社,交通信息与安全

期刊名称&#xff1a;交通信息与安全主管单位&#xff1a;中华人民共和国教育部主办单位&#xff1a;武汉理工大学;交通计算机应用信息网期刊级别&#xff1a;国家级国际刊号&#xff1a;ISSN&#xff1a;1674-4861国内刊号&#xff1a;CN&#xff1a;42-1781/U邮发代号&#x…

k1658停运到什么时候_最近网传的春节快递停运时间表,是假的!

“我有货&#xff0c;你有钱&#xff0c;其间没有快递员。”最近&#xff0c;杭州市民梁先生的朋友圈里&#xff0c;突然火了一张图片。标记为2019年日历的这张图片上&#xff0c;1月25日和2月12日之间的日期都被白线框定&#xff0c;并打出了“其间没有快递员”的字样。还有一…

a5d2 phy驱动

1. 下面代码实现了phy驱动的实现和注册 2. device tree实现了phy的device 3. 在mdio总线注册后&#xff0c;总线会调用总线驱动的match函数&#xff0c;进行device和driver的匹配 static int mdio_bus_match(struct device *dev, struct device_driver *drv) return (phydrv-…

vs2008配置winddk

Vs2008配置winddk 1、 安装winddk&#xff0c;我安装在了c盘下&#xff1b; 2、 电脑-》属性-》环境配置里 系统变量里加入 DDKBASE&#xff0c;其值是 3、 path变量里增加 ;C:\WinDDK\7600.16385.1; 第二大步&#xff1a;&#xff08;非常关键&#xff09; 1、 vs2008里 工具…

android跨进程事件注入(程序模拟用户输入)

转载请注明出处 早想写这篇&#xff0c;一直没空&#xff0c;现在总结下。 需求&#xff1a; 需要在程序内模拟用户输入&#xff0c;比如点击屏幕&#xff0c;或者输入键盘。模拟用户的滑动等。具体的需求&#xff0c;比如测试的时候&#xff0c;测试打开浏览器1000次。或者通过…

三菱d700变频器接线图_图解PLC与变频器通讯接线

plc与变频器两者是一种包含与被包含的关系&#xff0c;PLC与变频器都可以完成一些特定的指令&#xff0c;用来控制电机马达&#xff0c;PLC是一种程序输入执行硬件&#xff0c;变频器则是其中之一。但是PLC的涵盖范围又比变频器大&#xff0c;还可以用来控制更多的东西&#xf…

全国高校计算机考试用的什么版本,全国高校计算机等级考试与全国计算机等级考试,有区别吗...

技校网专门为您推荐的类似问题答案问题1&#xff1a;全国高校计算机等级考试一级和全国计算机等级考试一级有什么区别不一样的 全国高校计算机等级考试是专门为全国各高校非计算机专业的在校大学生举行的计算机基础知识和应用能力等级考试。根据教育厅通知要求&#xff0c;各高…

ASCII码排序

ASCII码排序 时间限制&#xff1a;3000 ms | 内存限制&#xff1a;65535 KB难度&#xff1a;2描述输入三个字符&#xff08;可以重复&#xff09;后&#xff0c;按各字符的ASCII码从小到大的顺序输出这三个字符。输入第一行输入一个数N,表示有N组测试数据。后面的N行输入多组…

a5d2启动分析

A5D2对外部存储设备的启动顺序如下图&#xff1a; SDMMC_1接的sd卡&#xff0c;SDMMC_0接的emmc, SPI_0接的串行flash,当外部存储都不可用或没有启动程序的话&#xff0c;会直接进入sam-ba monitor&#xff0c;就可以执行sam-ba提供的各种烧写脚本了。 目前我们使用的烧写脚本…

软件测试菲律宾,英雄联盟手游菲律宾测试资格怎么得 菲律宾测试资格获取攻略[多图]...

英雄联盟手游菲律宾服务器将先行开放测试&#xff0c;所有想体验游戏的玩家可以申请获得测试资格来优先体验&#xff0c;下面各位玩家一起来看一下测试资格的获取方法吧。目前游戏只能够在外服测试&#xff0c;而且是菲律宾的服务器才行&#xff0c;这是国外游戏测试的一个老套…

ug建模文本怎么竖着_UG建模知乎答疑练习小集锦

持续更新中……solidworks 如何在圆弧边折弯&#xff1f;​www.zhihu.comsolidworks像这样使用扫描为什么得不到结果&#xff1f;​www.zhihu.com请问一下solidworks像我这样使用扫描加了引导线但为什么没有反应&#xff08;想扫描一个杨桃那样的东西&#xff09;?​www.zhihu…

NSHashTable and NSMapTable

NSSet和NSDictionary是两个常用的类&#xff0c;但是他们默认假定了其中对象的内存行为。对于NSSet&#xff0c;object是强引用的&#xff0c;和NSDictionary中的value是一样的。而NSDictionary中的key则是copy的&#xff0c;因此当开发者想要使NSSet的objects或者NSDictionary…

linux中 likely与unlikely

看内核时总遇到if(likely( )){}或是if(unlikely( ))这样的语句&#xff0c;最初不解其意&#xff0c;现在有所了解&#xff0c;所以也想介绍一下。likely() 与 unlikely()是内核&#xff08;我看的是2.6.22.6版本&#xff0c;2.6的版本应该都有&#xff09;中定义的两个宏。位于…

win10 iis网站服务器,windows10如何搭建IIS服务器

web服务器无处不在&#xff0c;本次教程主要简单介绍一个简单的web服务IIS&#xff0c;IIS主要适用于ASP.NET、ASP等语言使用。1、打开控制面选择程序和功能2、点击启用或关闭windows功能打开一个小框框提供给用户配置相关软件&#xff0c;本次主要打开IIS功能 &#xff0c;具体…

表格数字乘以百分比怎么算_EXCEL记住这两个快捷键,1秒种设好数字格式

你还在用右键设置单元格格式来设置千分位吗&#xff1f;你还在用右键设置单元格格式来设置百分比吗&#xff1f;今天小马教大家两个快捷键&#xff0c;记住这两个快捷键&#xff0c;1秒钟设好数字格式。设置数字的千分位 CtrlShift1可能这个数字比较难记&#xff0c;可以把1想象…

设备树使用手册

设备树使用手册This page walks through how to write a device tree for a new machine. It is intended to provide an overview of device tree concepts and how they are used to describe a machine.本文将介绍如何为一个新机器编写设备树。我们准备提供一个有关设备树概…