diff --git a/app/src/normal/AndroidManifest.xml b/app/src/normal/AndroidManifest.xml
index c7947be1..7f7d175b 100644
--- a/app/src/normal/AndroidManifest.xml
+++ b/app/src/normal/AndroidManifest.xml
@@ -52,5 +52,17 @@
android:pathPattern=".*\\.love" />
+
+
+
+
+
+
+
diff --git a/love/src/normal/java/org/love2d/android/SelectorActivity.java b/love/src/normal/java/org/love2d/android/SelectorActivity.java
new file mode 100644
index 00000000..55e14bda
--- /dev/null
+++ b/love/src/normal/java/org/love2d/android/SelectorActivity.java
@@ -0,0 +1,62 @@
+/**
+ * Copyright (c) 2006-2023 LOVE Development Team
+ *
+ * This software is provided 'as-is', without any express or implied
+ * warranty. In no event will the authors be held liable for any damages
+ * arising from the use of this software.
+ *
+ * Permission is granted to anyone to use this software for any purpose,
+ * including commercial applications, and to alter it and redistribute it
+ * freely, subject to the following restrictions:
+ *
+ * 1. The origin of this software must not be misrepresented; you must not
+ * claim that you wrote the original software. If you use this software
+ * in a product, an acknowledgment in the product documentation would be
+ * appreciated but is not required.
+ * 2. Altered source versions must be plainly marked as such, and must not be
+ * misrepresented as being the original software.
+ * 3. This notice may not be removed or altered from any source distribution.
+ **/
+
+package org.love2d.android;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Bundle;
+import android.util.Log;
+import android.widget.Toast;
+
+import androidx.activity.result.ActivityResultLauncher;
+import androidx.activity.result.contract.ActivityResultContracts;
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+
+public class SelectorActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ if (android.os.Build.VERSION.SDK_INT < 19) {
+ Toast.makeText(this, "This activity does not work on Android before KitKat!", Toast.LENGTH_SHORT).show();
+ finish();
+ }
+
+ final ActivityResultLauncher openFileLauncher = registerForActivityResult(
+ new ActivityResultContracts.OpenDocument(),
+ (Uri result) -> {
+ if (result != null) {
+ Intent intent = new Intent(SelectorActivity.this, GameActivity.class);
+ intent.setData(result);
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
+ startActivity(intent);
+ }
+
+ SelectorActivity.this.finish();
+ }
+ );
+
+ openFileLauncher.launch(new String[] {"*/*"});
+ }
+}
diff --git a/love/src/normal/res/values-v19/bools.xml b/love/src/normal/res/values-v19/bools.xml
new file mode 100644
index 00000000..53373ad2
--- /dev/null
+++ b/love/src/normal/res/values-v19/bools.xml
@@ -0,0 +1,4 @@
+
+
+ true
+
diff --git a/love/src/normal/res/values/bools.xml b/love/src/normal/res/values/bools.xml
index e5ea9b10..879b8662 100644
--- a/love/src/normal/res/values/bools.xml
+++ b/love/src/normal/res/values/bools.xml
@@ -1,4 +1,5 @@
false
+ false