diff --git a/src/com/android/providers/downloads/DownloadInfo.java b/src/com/android/providers/downloads/DownloadInfo.java
index 00b104525874093ca6a4ce38eb4d4b7f1d7128a0..304d70fdbb76613ba82069996441e85ecb7f9f8c 100644
--- a/src/com/android/providers/downloads/DownloadInfo.java
+++ b/src/com/android/providers/downloads/DownloadInfo.java
@@ -397,8 +397,9 @@ public class DownloadInfo {
      */
     private int checkIsNetworkTypeAllowed(int networkType) {
         if (mIsPublicApi) {
-            int flag = translateNetworkTypeToApiFlag(networkType);
-            if ((flag & mAllowedNetworkTypes) == 0) {
+            final int flag = translateNetworkTypeToApiFlag(networkType);
+            final boolean allowAllNetworkTypes = mAllowedNetworkTypes == ~0;
+            if (!allowAllNetworkTypes && (flag & mAllowedNetworkTypes) == 0) {
                 return NETWORK_TYPE_DISALLOWED_BY_REQUESTOR;
             }
         }