Android手机接收不到UDP报文

问题:

同一套程序在中兴手机和华为手机上可以接收到UDP广播报文,但在HTC手机上却接收不到?


问题原因:(仅猜测而已,未经过验证)

手机开启UDP广播功能不仅耗电,而且占用系统资源。可能有些手机厂家默认把这个功能给关掉了,

你若想要用手机来发送接收UDP报文,得先申请,才能使用这个功能。

具体如何申请和释放:

1、可先在oncreate()方法里面实例化一个WifiManager.MulticastLock 对象lock;具体如下:

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

2、在调用广播发送、接收报文之前先调用lock.acquire()方法;

3、用完之后及时调用lock.release()释放资源,否决多次调用lock.acquire()方法,程序可能会崩,详情请见

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

注;记得在配置文件里面添加如下权限:

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


经过这样处理后,HTC手机也能正常发送接收到广播报文。

小结:事出有因,多想想为啥,这样我们才有可能找到问题的真正原因。

参考网站:

 http://developer.android.com/reference/android/net/wifi/WifiManager.MulticastLock.html
http://blog.csdn.net/lvron/article/details/6606755



你可能感兴趣的:(Android手机接收不到UDP报文)