我試圖讓我的Android設備的MAC地址,而不依賴於myWifiInfo.getMacAddress()
獲取android系統中的MAC地址,而不使用WifiInfo例如
以下是我使用的代碼:
try{
InetAddress inet = InetAddress.getLocalHost();
NetworkInterface ni = NetworkInterface.getByInetAddress(inet);
byte[] address = ni.getHardwareAddress();
}
catch(Exception e){
Log.d("MyActivity",e.toString());
}
我得到以下例外:
08-01 06:10:56.239: WARN/System.err(23164): at java.net.NetworkInterface.rethrowAsSocketException(NetworkInterface.java:212)
08-01 06:10:56.239: WARN/System.err(23164): at java.net.NetworkInterface.collectIpv4Address(NetworkInterface.java:178)
08-01 06:10:56.239: WARN/System.err(23164): at java.net.NetworkInterface.getByName(NetworkInterface.java:118)
08-01 06:10:56.239: WARN/System.err(23164): at java.net.NetworkInterface.getNetworkInterfacesList(NetworkInterface.java:270)
08-01 06:10:56.239: WARN/System.err(23164): at java.net.NetworkInterface.getByInetAddress(NetworkInterface.java:228)
08-01 06:10:56.239: WARN/System.err(23164): at com.example.MyActivity$MyAsyncTask.doInBackground(MyActivity.java:82)
08-01 06:10:56.247: WARN/System.err(23164): at com.example.MyActivity$MyAsyncTask.doInBackground(MyActivity.java:43)
08-01 06:10:56.247: WARN/System.err(23164): at android.os.AsyncTask$2.call(AsyncTask.java:264)
08-01 06:10:56.247: WARN/System.err(23164): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
08-01 06:10:56.247: WARN/System.err(23164): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
08-01 06:10:56.247: WARN/System.err(23164): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
08-01 06:10:56.247: WARN/System.err(23164): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
08-01 06:10:56.247: WARN/System.err(23164): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
08-01 06:10:56.247: WARN/System.err(23164): at java.lang.Thread.run(Thread.java:856)
08-01 06:10:56.247: WARN/System.err(23164): Caused by: libcore.io.ErrnoException: socket failed: EACCES (Permission denied)
08-01 06:10:56.247: WARN/System.err(23164): at libcore.io.Posix.socket(Native Method)
08-01 06:10:56.247: WARN/System.err(23164): at libcore.io.BlockGuardOs.socket(BlockGuardOs.java:181)
08-01 06:10:56.247: WARN/System.err(23164): at java.net.NetworkInterface.collectIpv4Address(NetworkInterface.java:163)
08-01 06:10:56.247: WARN/System.err(23164): ... 12 more
我已經給許可
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
的異常是從下面一行在上面的代碼拋出:
NetworkInterface ni = NetworkInterface.getByInetAddress(inet);
當我登錄的INET地址,我得到了相同localhost/127.0.0.1
有人能請指出這樣做的原因問題和解決方案相同?
任何幫助深表感謝
你也可以使用藍牙API獲取MAC地址 – Lucifer 2012-08-01 06:41:16
感謝信息。但我試圖瞭解我解釋的問題的原因,並解釋相同 – user1400538 2012-08-01 06:44:29
只是一個猜測嘗試給你的代碼中的'<使用權限android:name =「android.permission.INTERNET」/>'權限。 – Lucifer 2012-08-01 06:47:36