最近遇到个问题,在android手机上发送UDP报文的时候,HTC等机型(测试用HTC new one)接收不到广播报文,而其他的samsung, huawei, xiaomi, nexus等等均没有问题。

所以猜测应该是HTC优化了系统,把它给关掉了。由于手机开启UDP广播功能不仅耗电,而且占用系统资源。可能有些手机厂家默认把这个功能给关掉了,

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

解决方案:

1.在oncreate()方法里面实例化一个WifiManager.MulticastLock 对象lock

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

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 new one即可发送和接收广播报文了

参考:

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

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

最新文章

  1. libtcc使用问题一二
  2. UML系列03之 UML类图(二)
  3. Linux功能-环境变量
  4. python写的自动签到脚本。
  5. bzoj3140: [Hnoi2013]消毒
  6. php转化输入日期为Unix 纪元到当前时间的秒数 日期筛选
  7. linux awk命令详细使用方法
  8. [原创]ubuntu14.04部署ELK+redis日志分析系统
  9. Spring Boot使用Maven打包替换资源文件占位符
  10. test request&amp;&amp;response 代码实现
  11. maven打包并上传到nexus3私服
  12. Flask框架(一)
  13. Peter&#39;s smokes -poj 2509
  14. Android studio 中,遇到报错:ERROR: x86_64 emulation currently requires hardware acceleration! CPU acceleration status:HAXM must be updated(version 1.1.1&lt;6.0.1)的解决方法
  15. AutoCAD开发3--修改文字图层,颜色
  16. 转载:Unity3D游戏对象消失enabled、Destroy与active的区别
  17. Color the ball(HDU1556)树状数组
  18. Why do people integrate Spark with TensorFlow even if there is a distributed TensorFlow framework?
  19. QoS的构建模块与机制
  20. Django框架model实现数据库增删查改

热门文章

  1. 5.3 Static
  2. SQLSERVER 里经常看到的CACHE STORES是神马东东?
  3. Windbg符号与源码 《第二篇》
  4. Hadoop HDFS 架构设计
  5. 用 NuGet Package Explorer 管理你的攻城武器
  6. jquery 常用插件
  7. javascript中数组揭秘
  8. 如果下次做模板,我就使用Nvelocity
  9. Nginx学习笔记(一) Nginx架构
  10. ichat在线客服jQuery插件(可能是历史上最灵活的)