diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 13d8b590d..0c1ecc827 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -34,6 +34,7 @@
+
diff --git a/src/org/fdroid/fdroid/net/MDnsHelper.java b/src/org/fdroid/fdroid/net/MDnsHelper.java
index 48e2bc853..30a1305a6 100644
--- a/src/org/fdroid/fdroid/net/MDnsHelper.java
+++ b/src/org/fdroid/fdroid/net/MDnsHelper.java
@@ -3,6 +3,8 @@ package org.fdroid.fdroid.net;
import android.app.Activity;
import android.content.Context;
+import android.net.wifi.WifiManager;
+import android.net.wifi.WifiManager.MulticastLock;
import android.os.AsyncTask;
import android.os.Handler;
import android.os.Looper;
@@ -32,10 +34,14 @@ public class MDnsHelper implements ServiceListener {
final RepoScanListAdapter mAdapter;
private JmDNS mJmdns;
+ private MulticastLock mMulticastLock;
public MDnsHelper(Activity activity, final RepoScanListAdapter adapter) {
mActivity = activity;
mAdapter = adapter;
+ WifiManager wm = (WifiManager) activity.getSystemService(Context.WIFI_SERVICE);
+ mMulticastLock = wm.createMulticastLock(activity.getPackageName());
+ mMulticastLock.setReferenceCounted(false);
}
@Override
@@ -75,6 +81,7 @@ public class MDnsHelper implements ServiceListener {
}
public void discoverServices() {
+ mMulticastLock.acquire();
new AsyncTask() {
@Override
@@ -98,6 +105,7 @@ public class MDnsHelper implements ServiceListener {
}
public void stopDiscovery() {
+ mMulticastLock.release();
if (mJmdns == null)
return;
mJmdns.removeServiceListener(HTTP_SERVICE_TYPE, MDnsHelper.this);