利用WifiManager取得IP

AndroidManifest.xml需要加入
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

1<?xml version="1.0" encoding="utf-8"?>
3      package="johnson.layout"
4      android:versionCode="1"
5      android:versionName="1.0">
6    <uses-sdk android:minSdkVersion="8" />
7    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
8    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
9    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
10 
11    <application android:icon="@drawable/icon" android:label="@string/app_name">
12        <activity android:name=".Layout_testActivity"
13                  android:label="@string/app_name">
14            <intent-filter>
15                <action android:name="android.intent.action.MAIN" />
16                <category android:name="android.intent.category.LAUNCHER" />
17            </intent-filter>
18        </activity>
19    </application>
20</manifest>

Java部份:

1import android.app.Activity;
2import android.net.wifi.WifiManager;
3import android.net.wifi.WifiInfo;
4import android.os.Bundle;
5import android.widget.TextView;
6 
7public class test extends Activity {
8    TextView ans = null;
9     
10    @Override
11    public void onCreate(Bundle savedInstanceState) {
12        super.onCreate(savedInstanceState);
13        setContentView(R.layout.main);
14         
15        ans = (TextView) findViewById( R.id.ans );
16        ans.setText("IP:" + getMyIp() );
17    }
18     
19    //取得IP
20    private String getMyIp(){
21        //新增一個WifiManager物件並取得WIFI_SERVICE
22        WifiManager wifi_service = (WifiManager)getSystemService(WIFI_SERVICE);
23        //取得wifi資訊
24        WifiInfo wifiInfo = wifi_service.getConnectionInfo();
25        //取得IP,但這會是一個詭異的數字,還要再自己換算才行
26        int ipAddress = wifiInfo.getIpAddress();
27        //利用位移運算和AND運算計算IP
28        String ip = String.format("%d.%d.%d.%d",(ipAddress & 0xff),(ipAddress >> 8 & 0xff),(ipAddress >> 16 & 0xff),(ipAddress >> 24 & 0xff));
29        return ip;  
30    }
31}
Categories: Android