Android-------------获取手机IP地址
##帮助类PhoneNetStateUtil
package com.funs.PhoneIPAddress.utils;
/**
* 手机联网状态工具类 需要的权限 WIFI时:</br>
* android.permission.ACCESS_WIFI_STATE</br>
* android.permission.CHANGE_WIFI_STATE </br>
* android.permission.WAKE_LOCK </br>
* 手机联网时:</br>
* android.permission.INTERNET
*/
public class PhoneNetStateUtil {
/** 手机网络连接状态管理者 */
private static ConnectivityManager mConnectivityManager;
/** 手机网络信息 */
private static NetworkInfo mNetworkInfo;
private static Context mContext;
private static void init(Context context) {
mContext = context;
mConnectivityManager = (ConnectivityManager) mContext
.getSystemService(Context.CONNECTIVITY_SERVICE);
mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
}
/**
* 判断网络是否可用</br>
* 必须首先调用该方法,判断网络是否可用。可用再判断是否为WIFI
*/
public static boolean isNetOk(Context context){
mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (mConnectivityManager == null) {//判断网络连通管理器是否存在
return false;
}
mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
if (mNetworkInfo == null) {//判断网络连接信息是否存在
return false;
}
if (mNetworkInfo.isConnected()) {//判断网络是否连接成功
return true;
}
return false;
}
/**
* 判断网络状态是否为WIFI联网
*/
public static boolean isWIFI(Context context) {
init(context);
return (ConnectivityManager.TYPE_WIFI == mNetworkInfo.getType()) ? true
: false;
}
/**
* 手机连接移动网络时,获取IP地址
*/
public static String getMobileIpAddress(Context context){
// String mobileIp = "";
StringBuilder mobileIp = new StringBuilder("");
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()) {
// mobileIp = inetAddress.getHostAddress().toString();
// return mobileIp;
mobileIp.append(inetAddress.getHostAddress().toString());
}
}
}
} catch (Exception e) {
Log.e("WifiPreference IpAddress", e.toString());
}
if ("".equals(mobileIp)) {
Toast.makeText(context, "网络连接异常哦亲!", Toast.LENGTH_SHORT).show();
}
return mobileIp.toString();
}
/**
* 获取本地IP地址,包含了各路由的地址,
*/
public static String getLocalIpAddress() {
StringBuilder sbIpAddress = new StringBuilder("");
try {
Enumeration<NetworkInterface> en = NetworkInterface
.getNetworkInterfaces();
int one = 0;
int two = 0;
while (en.hasMoreElements()) {
NetworkInterface ni = en.nextElement();
one++;
Enumeration<InetAddress> enIp = ni.getInetAddresses();
while (enIp.hasMoreElements()) {
InetAddress inet = enIp.nextElement();
two++;
if (!inet.isLoopbackAddress()
&& (inet instanceof Inet4Address)) {
// return inet.getHostAddress().toString();
sbIpAddress.append("/" + inet.getHostAddress().toString());
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return sbIpAddress.toString();
}
/**
* 手机wifi联网时,获取内网IP地址
*/
public static String getWifiInsideIpAddress(Context context){
init(context);
WifiManager wifiManager = (WifiManager) mContext
.getSystemService(Context.WIFI_SERVICE);
if (!wifiManager.isWifiEnabled()) {
wifiManager.setWifiEnabled(true);
}
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int ipAddress = wifiInfo.getIpAddress();
String insideIp = int2ip(ipAddress);
return insideIp;
}
/**
* 手机wifi联网时,获取外网IP地址</br>
* <b>因为该方法需要访问网络数据,属于耗时操作,所以应放到非UI线程中执行</b>
*/
public static String getWifiOutsideIpAddress() {
String outsideIp = "";
try {
String address = "http://ip.taobao.com/service/getIpInfo2.php?ip=myip";
URL url = new URL(address);
HttpURLConnection connection = (HttpURLConnection) url
.openConnection();
connection.setUseCaches(false);
if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
InputStream in = connection.getInputStream();
// 将流转化为字符串
BufferedReader reader = new BufferedReader(
new InputStreamReader(in));
String tmpString = "";
StringBuilder retJSON = new StringBuilder();
while ((tmpString = reader.readLine()) != null) {
retJSON.append(tmpString + "\n");
}
JSONObject jsonObject = new JSONObject(retJSON.toString());
String code = jsonObject.getString("code");
if (code.equals("0")) {
JSONObject data = jsonObject.getJSONObject("data");
outsideIp = data.getString("ip");
} else {
outsideIp = "";
Log.e("提示", "IP接口异常,无法获取IP地址!");
}
} else {
outsideIp = "";
Log.e("提示", "网络连接异常,无法获取IP地址!");
}
} catch (Exception e) {
outsideIp = "";
Log.e("提示", "获取IP地址时出现异常,异常信息是:" + e.toString());
}
return outsideIp;
}
/**
* 将int型数据转化为ip地址
* @param value
*/
private static String int2ip(int value) {
return (value & 0xFF) + "." + ((value >> 8) & 0xFF) + "."
+ ((value >> 16) & 0xFF) + "." + ((value >> 24) & 0xFF);
}
}
Android-------------获取手机IP地址的更多相关文章
- Xamarin.Android 获取手机IP地址
命名空间: using System.Net; 代码: IPAddress[] address = Dns.GetHostAddresses(Dns.GetHostName()); ] != null ...
- Android 获取手机Mac地址,手机名称
/** * 获取手机mac地址<br/> * 错误返回12个0 */ public static String getMacAddress(Context context) { // 获取 ...
- Android 获取当前IP地址
首先设置用户权限 <uses-permission android:name="android.permission.INTERNET"></uses-permi ...
- 微信小程序开发(八)获取手机ip地址
// succ.wxml <view>手机IP:{{motto.query}}</view> // succ.js var app = getApp() Page({ data ...
- Android 获得本地IP地址、外网IP地址、本设备网络状态信息、本地Mac地址
本地内网IP和外网IP的区别: 根据我的经验一台电脑需要两个ip才可以上网,一个是本地的内网ip 一个是外网的ip 本地的ip 一般是192.168.1.2这种样子 只要在不同的路由器上可以重复 外 ...
- android获取手机信息大全
IMEI号,IESI号,手机型号: private void getInfo() { TelephonyManager mTm = (TelephonyManager) getSystemServic ...
- android获取手机信息2
IMEI号,IESI号,手机型号: private void getInfo() { TelephonyManager mTm = (TelephonyManager) getSystemServic ...
- [转] android获取手机信息大全
原文链接:http://blog.csdn.net/hytfly/article/details/8552483 IMEI号,IESI号,手机型号: private void getInfo() { ...
- 在Thinkphp3.2.3框架下实现自动获取客户端IP地址的get_client_ip()函数
在Thinkphp框架下使用get_client_ip()函数获取客户端IP地址十分方便: 一行代码便可以实现:$ip = get_client_ip(); 但当我们测试时会遇到后台获取的IP地址显示 ...
随机推荐
- Android -------- 从一个Fragment跳转到另一个Fragment
一.直接getActivity,使用activity的fragmenttransation的replace方法替换 private void changeToAnotherFragment(){ // ...
- 让 asp.net mvc 支持 带有+ _ 等特殊字符的路由
最近配置微信 业务域名 时,需要在服务器的根目录中上传一个文本文件,而这个文本文件需要放这样的目录中: 于在就在 服务器目录中创建了对应的文件夹,并将kuPv.txt上传,但是访问时,却怎么也访问不到 ...
- windows server 2003 AD
本文转载:http://www.cnblogs.com/zfanlong1314/admin/EditPosts.aspx?opt=1 今天教大家用windows server2003系统建立Acti ...
- SQL Server 2005无法远程连接的解决方法
以前一直连接本地的数据库,连接SQL Server 2005是小菜的... 做项目也是老师搭好了服务器端,打上IP去访问就行...也不用考虑太多. 今天自己在公司搭SQL Server 2005服务器 ...
- Spring4分别整合mongo2.X和3.0
1.pom文件添加: <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-jav ...
- jQuery select 操作全集
添加option $('#id').append("<option value="value">Text</option>");//为s ...
- C程序设计语言练习题1-7
练习1-7 编写一个打印EOF的值的程序. #include <stdio.h> // 包含标准库的信息. int main() // 定义名为main的函数,它不接受参数值. { // ...
- Objective-C Http常用API 同步请求与异步请求
开发iOS应用要调用Http接口.获取Http资源,有一套比较成熟的框架ASIHTTPRequest.而我还是比较喜欢使用原始一点的 API,而它跟其他的面向对象语言有许多共通之处.本文分同步请求和异 ...
- js 简单倒计时插件和使用方法
// 倒计时插件 (function (){ function countdown(config){ var startDate = config.start ? new Date(config.st ...
- [POJ] 2239 Selecting Courses(二分图最大匹配)
题目地址:http://poj.org/problem?id=2239 Li Ming大学选课,每天12节课,每周7天,每种同样的课可能有多节分布在不同天的不同节.问Li Ming最多可以选多少节课. ...