如何在Android设备上接收UDP广播

时间:2014-03-10 09:55:27

标签: android network-programming android-broadcast android-permissions

如何让我的Android手机接收UDP广播?

目前我正在使用平板电脑和手机测试我的应用。问题是只有平板电脑才能用作服务器,而不是手机。

我的应用程序的问题所在: - 客户端在本地网络中发送广播 - 服务器正在接收此广播并直接向客户端发送响应

我很确定我知道我知道什么是错的,因为该应用程序仅在平板电脑上运行服务器时工作,而且手机无法通过标准接收广播..那么我该如何解决这个问题呢? / p>

我尝试为服务器实现以下代码以使其接收广播:

WifiManager wifi = (WifiManager)getSystemService(Context.WIFI_SERVICE);
        if (wifi != null){
            Toast.makeText(getApplicationContext(), "WifiLock create!", Toast.LENGTH_LONG).show();
            WifiManager.WifiLock lock = wifi.createWifiLock("mylock");
            lock.acquire();
        }

此外,我在我的应用中拥有以下权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />

有谁知道如何解决这个问题? 提前致谢

1 个答案:

答案 0 :(得分:1)

默认情况下,Android阻止所有广播wifi消息以节省电量。 您必须创建一个wifilock对象并获取锁以允许广播消息。 有关详情,请参阅此处: WIFILOCKS