diff --git a/lib/context.c b/lib/context.c
index 46ff505009aa0b9620baac25c355e826bfdc8a8a..8a96518995f8cc1bfb2ebf3de5a28e247d7eb571 100644
--- a/lib/context.c
+++ b/lib/context.c
@@ -353,6 +353,10 @@ lws_create_context(struct lws_context_creation_info *info)
 	int pid_daemon = get_daemonize_pid();
 #endif
 	int n, m;
+#if defined(__ANDROID__)
+	struct rlimit rt;
+#endif
+
 
 	lwsl_notice("Initial logging level %d\n", log_level);
 	lwsl_notice("Libwebsockets version: %s\n", library_version);
@@ -390,7 +394,16 @@ lws_create_context(struct lws_context_creation_info *info)
 		lwsl_notice(" Started with daemon pid %d\n", pid_daemon);
 	}
 #endif
-	context->max_fds = getdtablesize();
+#if defined(__ANDROID__)
+		n = getrlimit ( RLIMIT_NOFILE,&rt);
+		if (-1 == n) {
+			lwsl_err("Get RLIMIT_NOFILE failed!\n");
+			return NULL;
+		}
+		context->max_fds = rt.rlim_cur;
+#else
+		context->max_fds = getdtablesize();
+#endif
 
 	if (info->count_threads)
 		context->count_threads = info->count_threads;