diff --git a/CHANGELOG.md b/CHANGELOG.md
index e908f513..ae53e268 100755
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,10 @@
 - Added support for `onPermissionRequest` event on iOS 15.0+
 - Updated `getMetaThemeColor` on iOS 15.0+
 
+## 5.4.1+1
+
+- Fixed Android default context menu over custom context menu on API Level 31+ 
+
 ## 5.4.1
 
 - Managed iOS native `detachFromEngine` flutter plugin event and updated `dispose` methods
diff --git a/android/src/main/java/com/pichillilorenzo/flutter_inappwebview/in_app_webview/InAppWebView.java b/android/src/main/java/com/pichillilorenzo/flutter_inappwebview/in_app_webview/InAppWebView.java
index f4eac58e..1783e6ad 100755
--- a/android/src/main/java/com/pichillilorenzo/flutter_inappwebview/in_app_webview/InAppWebView.java
+++ b/android/src/main/java/com/pichillilorenzo/flutter_inappwebview/in_app_webview/InAppWebView.java
@@ -54,9 +54,6 @@ import androidx.webkit.WebViewCompat;
 import androidx.webkit.WebViewFeature;
 
 import com.pichillilorenzo.flutter_inappwebview.InAppWebViewFlutterPlugin;
-import com.pichillilorenzo.flutter_inappwebview.types.DownloadStartRequest;
-import com.pichillilorenzo.flutter_inappwebview.types.HitTestResult;
-import com.pichillilorenzo.flutter_inappwebview.types.InAppWebViewInterface;
 import com.pichillilorenzo.flutter_inappwebview.JavaScriptBridgeInterface;
 import com.pichillilorenzo.flutter_inappwebview.R;
 import com.pichillilorenzo.flutter_inappwebview.Util;
@@ -77,6 +74,8 @@ import com.pichillilorenzo.flutter_inappwebview.plugin_scripts_js.PrintJS;
 import com.pichillilorenzo.flutter_inappwebview.plugin_scripts_js.PromisePolyfillJS;
 import com.pichillilorenzo.flutter_inappwebview.pull_to_refresh.PullToRefreshLayout;
 import com.pichillilorenzo.flutter_inappwebview.types.ContentWorld;
+import com.pichillilorenzo.flutter_inappwebview.types.DownloadStartRequest;
+import com.pichillilorenzo.flutter_inappwebview.types.InAppWebViewInterface;
 import com.pichillilorenzo.flutter_inappwebview.types.PluginScript;
 import com.pichillilorenzo.flutter_inappwebview.types.PreferredContentModeOptionType;
 import com.pichillilorenzo.flutter_inappwebview.types.URLRequest;
@@ -1357,8 +1356,16 @@ final public class InAppWebView extends InputAwareWebView implements InAppWebVie
     }
 
     Menu actionMenu = actionMode.getMenu();
+    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+      actionMode.hide(3000);
+    }
+    List<MenuItem> defaultMenuItems = new ArrayList<>();
+    for (int i = 0; i < actionMenu.size(); i++) {
+      defaultMenuItems.add(actionMenu.getItem(i));
+    }
+    actionMenu.clear();
+    actionMode.finish();
     if (customSettings.disableContextMenu) {
-      actionMenu.clear();
       return actionMode;
     }
 
@@ -1371,16 +1378,15 @@ final public class InAppWebView extends InputAwareWebView implements InAppWebVie
     ContextMenuSettings contextMenuSettings = new ContextMenuSettings();
     if (contextMenu != null) {
       customMenuItems = (List<Map<String, Object>>) contextMenu.get("menuItems");
-      Map<String, Object> contextMenuOptionsMap = (Map<String, Object>) contextMenu.get("settings");
-      if (contextMenuOptionsMap != null) {
-        contextMenuSettings.parse(contextMenuOptionsMap);
+      Map<String, Object> contextMenuSettingsMap = (Map<String, Object>) contextMenu.get("settings");
+      if (contextMenuSettingsMap != null) {
+        contextMenuSettings.parse(contextMenuSettingsMap);
       }
     }
     customMenuItems = customMenuItems == null ? new ArrayList<Map<String, Object>>() : customMenuItems;
 
     if (contextMenuSettings.hideDefaultSystemContextMenuItems == null || !contextMenuSettings.hideDefaultSystemContextMenuItems) {
-      for (int i = 0; i < actionMenu.size(); i++) {
-        final MenuItem menuItem = actionMenu.getItem(i);
+      for (final MenuItem menuItem : defaultMenuItems) {
         final int itemId = menuItem.getItemId();
         final String itemTitle = menuItem.getTitle().toString();
 
@@ -1459,7 +1465,6 @@ final public class InAppWebView extends InputAwareWebView implements InAppWebVie
         checkContextMenuShouldBeClosedTask.run();
       }
     }
-    actionMenu.clear();
 
     return actionMode;
   }