1.如果使用WIFI可以用android自带的类来获取IP

首先设置用户权限

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

<uses-permissionandroid:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>

<uses-permissionandroid:name="android.permission.WAKE_LOCK"></uses-permission>

其次,代码如下

  1. publicvoidonCreate(BundlesavedInstanceState){
  2. super.onCreate(savedInstanceState);
  3. setContentView(R.layout.main);
  4. //获取wifi服务
  5. WifiManagerwifiManager=(WifiManager)getSystemService(Context.WIFI_SERVICE);
  6. //判断wifi是否开启
  7. if(!wifiManager.isWifiEnabled()){
  8. wifiManager.setWifiEnabled(true);
  9. }
  10. WifiInfowifiInfo=wifiManager.getConnectionInfo();
  11. intipAddress=wifiInfo.getIpAddress();
  12. Stringip=intToIp(ipAddress);
  13. EditTextet=(EditText)findViewById(R.id.EditText01);
  14. et.setText(ip);
  15. }
  16. privateStringintToIp(inti){
  17. return(i&0xFF)+"."+
  18. ((i>>8)&0xFF)+"."+
  19. ((i>>16)&0xFF)+"."+
  20. (i>>24&0xFF);
  21. }

2.java方法:这时相当于是用的java的类来获取ip,其实这个不仅可以获得GPRS的,wifi的一样能够获取!

首先,设置用户上网权限

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

其次,代码如下

  1. publicStringgetLocalIpAddress()
  2. {
  3. try
  4. {
  5. for(Enumeration<NetworkInterface>en=NetworkInterface.getNetworkInterfaces();en.hasMoreElements();)
  6. {
  7. NetworkInterfaceintf=en.nextElement();
  8. for(Enumeration<InetAddress>enumIpAddr=intf.getInetAddresses();enumIpAddr.hasMoreElements();)
  9. {
  10. InetAddressinetAddress=enumIpAddr.nextElement();
  11. if(!inetAddress.isLoopbackAddress())
  12. {
  13. returninetAddress.getHostAddress().toString();
  14. }
  15. }
  16. }
  17. }
  18. catch(SocketExceptionex)
  19. {
  20. Log.e("WifiPreferenceIpAddress",ex.toString());
  21. }
  22. returnnull;
  23. }

3.可以通过创建一个socket,通过socket来获取本地的IP地址。

try{

Socket socket = new Socket("www.baidu.com", 80);

Log.i("", socket.getLocalAddress().toString());)}

catch(Exception e){

Log.i("",e.getMessage());

}

总之其实完全可以通过下面这个完整的文件来实现以上三个方法:

import java.net.InetAddress;

import java.net.NetworkInterface;

import java.net.Socket;

import java.util.Enumeration;

import android.app.Activity;

import android.net.wifi.WifiInfo;

import android.net.wifi.WifiManager;

import android.os.Bundle;

import android.text.format.Formatter;

import android.widget.EditText;
import android.widget.TextView;

public class IpAddressgetActivity extends Activity{

//private TextView mText;

@Override

public void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

EditText et =(EditText)findViewById(R.id.edittext01);

String ip = null;

//Method 1

WifiManager wifiManager = (WifiManager)getSystemService(WIFI_SERVICE);

WifiInfo info =wifiManager.getConnectionInfo();

ip = "wifiInfo :" +Formatter.formatIpAddress(info.getIpAddress());

ip += "\n";

//Method 2

try{

Socket socket = new Socket("10.40.73.41", 80);

ip += "socket : " + socket.getLocalAddress().toString() +"\n";

} catch (Exception e) {

e.printStackTrace();

//throw new RuntimeException();

}

//Method 3

try {

Enumeration<NetworkInterface>interfaces =NetworkInterface.getNetworkInterfaces();

NetworkInterface inf =interfaces.nextElement();

for (Enumeration<InetAddress>enumAddress =inf.getInetAddresses();enumAddress.hasMoreElements();){

InetAddress in = enumAddress.nextElement();

if(!in.isLinkLocalAddress()) {

ip += "NetworkInterface : " + in.getHostAddress() +"\n";

}

}

}catch (Exception e) {

e.printStackTrace();

//throw new RuntimeException();

}

et.setText(ip);

}

}

更多相关文章

  1. 通过ddmlib杀死某个android进程的方法
  2. Android一些常用知识和代码(不断更新)
  3. Android之 inflate() 方法总结
  4. Android读取服务器图片的三种方法
  5. android播放本地工程里的音乐和视频的方法
  6. ActionBar的一些使用方法
  7. H5调用原生APP的js方法

随机推荐

  1. Android(安卓)Lib层打印log之------bioni
  2. 移动应用开发辅助服务推荐
  3. 在代码中实现按下Home键的效果
  4. android coredump 调试
  5. Android小技巧总结1
  6. Android(安卓)studio 获取手机联系人和号
  7. Android(安卓)谷歌gcm推送所需要的端口
  8. Android学习笔记(三):Andriod程序框架
  9. Android四大组件之Activity(一)
  10. Tween动画介绍