Android携帯電話の2つの方法でIPアドレスを取得します

2003 ワード

1.WIFIの使用
まずユーザー権限の設定
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>    
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>    
<uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>
次に、コードは次のとおりです.
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		//   wifi  
		WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
		//   wifi    
		if (!wifiManager.isWifiEnabled()) {
			wifiManager.setWifiEnabled(true);
		}
		WifiInfo wifiInfo = wifiManager.getConnectionInfo();
		int ipAddress = wifiInfo.getIpAddress();
		String ip = intToIp(ipAddress);
		EditText et = (EditText) findViewById(R.id.EditText01);
		et.setText(ip);
	}

	private String intToIp(int i) {

		return (i & 0xFF) + "." + ((i >> 8) & 0xFF) + "." + ((i >> 16) & 0xFF)
				+ "." + (i >> 24 & 0xFF);
	}
2.GPRS使用
まず、ユーザーのインターネットアクセス権を設定します.
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
次に、コードは次のとおりです.
	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()) {
						return inetAddress.getHostAddress().toString();
					}
				}
			}
		} catch (SocketException ex) {
			Log.e("WifiPreference IpAddress", ex.toString());
		}
		return null;
	}