Android雜談--HTC等手機接收不到UDP廣播報文的解決方案

最近遇到個問題,在android手機上發送UDP報文的時候,HTC等機型(測試用HTC new one)接收不到廣播報文,而其餘的samsung, huawei, xiaomi, nexus等等均沒有問題。html

因此猜想應該是HTC優化了系統,把它給關掉了。因爲手機開啓UDP廣播功能不只耗電,並且佔用系統資源。可能有些手機廠家默認把這個功能給關掉了,java

你若想要用手機來發送接收UDP報文,得先申請,才能使用這個功能。android

解決方案:測試

1.在oncreate()方法裏面實例化一個WifiManager.MulticastLock 對象lock優化

WifiManager manager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE); WifiManager.MulticastLock lock= manager.createMulticastLock("localWifi");

2. 在調用廣播發送、接收報文以前先調用lock.acquire()方法ui

3. 用完以後及時調用lock.release()釋放資源,否決屢次調用lock.acquire()方法,程序可能會崩this

例如:spa

Caused by: java.lang.UnsupportedOperationException: Exceeded maximum number of wifi locks

另外,須要加入權限.net

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

這樣HTC new one便可發送和接收廣播報文了code

 

參考:

http://developer.android.com/reference/android/net/wifi/WifiManager.MulticastLock.html

http://blog.csdn.net/lvron/article/details/6606755

相關文章
相關標籤/搜索