summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java
diff options
context:
space:
mode:
authorSimonx22 <simon@oatmealdome.me>2026-03-20 12:55:42 -0400
committerSimonx22 <simon@oatmealdome.me>2026-03-20 13:01:54 -0400
commit385ac491095b3196d6999e29eb76921cdc09c736 (patch)
tree64e3fb6a6e4bb108df45be8b4f03f62ddf0301e2 /Source/Android/app/src/main/java
parentf074cdb08be338948d517e48a9bad6a8a2c991e0 (diff)
Android: Convert PermissionsHandler to Kotlin
Diffstat (limited to 'Source/Android/app/src/main/java')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/PermissionsHandler.java81
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/PermissionsHandler.kt84
2 files changed, 84 insertions, 81 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/PermissionsHandler.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/PermissionsHandler.java
deleted file mode 100644
index 9e74f206ad..0000000000
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/PermissionsHandler.java
+++ /dev/null
@@ -1,81 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-package org.dolphinemu.dolphinemu.utils;
-
-import android.app.Activity;
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.os.Build;
-import android.os.Environment;
-
-import androidx.core.content.ContextCompat;
-import androidx.fragment.app.FragmentActivity;
-
-import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE;
-import static android.Manifest.permission.RECORD_AUDIO;
-
-import org.dolphinemu.dolphinemu.R;
-import org.dolphinemu.dolphinemu.DolphinApplication;
-import org.dolphinemu.dolphinemu.NativeLibrary;
-
-public class PermissionsHandler
-{
- public static final int REQUEST_CODE_WRITE_PERMISSION = 500;
- public static final int REQUEST_CODE_RECORD_AUDIO = 501;
- private static boolean sWritePermissionDenied = false;
-
- public static void requestWritePermission(final FragmentActivity activity)
- {
- activity.requestPermissions(new String[]{WRITE_EXTERNAL_STORAGE},
- REQUEST_CODE_WRITE_PERMISSION);
- }
-
- public static boolean hasWriteAccess(Context context)
- {
- if (!isExternalStorageLegacy())
- return false;
-
- int hasWritePermission = ContextCompat.checkSelfPermission(context, WRITE_EXTERNAL_STORAGE);
- return hasWritePermission == PackageManager.PERMISSION_GRANTED;
- }
-
- public static boolean isExternalStorageLegacy()
- {
- return Build.VERSION.SDK_INT < Build.VERSION_CODES.Q || Environment.isExternalStorageLegacy();
- }
-
- public static void setWritePermissionDenied()
- {
- sWritePermissionDenied = true;
- }
-
- public static boolean isWritePermissionDenied()
- {
- return sWritePermissionDenied;
- }
-
- public static boolean hasRecordAudioPermission(Context context)
- {
- if (context == null)
- context = DolphinApplication.getAppContext();
- int hasRecordPermission = ContextCompat.checkSelfPermission(context, RECORD_AUDIO);
- return hasRecordPermission == PackageManager.PERMISSION_GRANTED;
- }
-
- public static void requestRecordAudioPermission(Activity activity)
- {
- if (activity == null)
- {
- // Calling from C++ code
- activity = DolphinApplication.getAppActivity();
- // Since the emulation (and cubeb) has already started, enabling the microphone permission
- // now might require restarting the game to be effective. Warn the user about it.
- NativeLibrary.displayAlertMsg(
- activity.getString(R.string.wii_speak_permission_warning),
- activity.getString(R.string.wii_speak_permission_warning_description),
- false, true, false);
- }
-
- activity.requestPermissions(new String[]{RECORD_AUDIO}, REQUEST_CODE_RECORD_AUDIO);
- }
-}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/PermissionsHandler.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/PermissionsHandler.kt
new file mode 100644
index 0000000000..56cee4fc59
--- /dev/null
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/PermissionsHandler.kt
@@ -0,0 +1,84 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+package org.dolphinemu.dolphinemu.utils
+
+import android.Manifest
+import android.app.Activity
+import android.content.Context
+import android.content.pm.PackageManager
+import android.os.Build
+import android.os.Environment
+import androidx.core.content.ContextCompat
+import androidx.fragment.app.FragmentActivity
+import org.dolphinemu.dolphinemu.DolphinApplication
+import org.dolphinemu.dolphinemu.NativeLibrary
+import org.dolphinemu.dolphinemu.R
+
+object PermissionsHandler {
+ const val REQUEST_CODE_WRITE_PERMISSION = 500
+ const val REQUEST_CODE_RECORD_AUDIO = 501
+
+ private var writePermissionDenied = false
+
+ @JvmStatic
+ fun requestWritePermission(activity: FragmentActivity) {
+ activity.requestPermissions(
+ arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), REQUEST_CODE_WRITE_PERMISSION
+ )
+ }
+
+ @JvmStatic
+ fun hasWriteAccess(context: Context): Boolean {
+ if (!isExternalStorageLegacy()) {
+ return false
+ }
+
+ val hasWritePermission =
+ ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE)
+ return hasWritePermission == PackageManager.PERMISSION_GRANTED
+ }
+
+ @JvmStatic
+ fun isExternalStorageLegacy(): Boolean {
+ return Build.VERSION.SDK_INT < Build.VERSION_CODES.Q || Environment.isExternalStorageLegacy()
+ }
+
+ @JvmStatic
+ fun setWritePermissionDenied() {
+ writePermissionDenied = true
+ }
+
+ @JvmStatic
+ fun isWritePermissionDenied(): Boolean {
+ return writePermissionDenied
+ }
+
+ @JvmStatic
+ fun hasRecordAudioPermission(context: Context?): Boolean {
+ val nonNullContext = context ?: DolphinApplication.getAppContext()
+ val hasRecordPermission =
+ ContextCompat.checkSelfPermission(nonNullContext, Manifest.permission.RECORD_AUDIO)
+ return hasRecordPermission == PackageManager.PERMISSION_GRANTED
+ }
+
+ @JvmStatic
+ fun requestRecordAudioPermission(activity: Activity?) {
+ val targetActivity = activity ?: DolphinApplication.getAppActivity()!!
+ if (activity == null) {
+ // Calling from C++ code
+ // Since the emulation (and cubeb) has already started, enabling the microphone permission
+ // now might require restarting the game to be effective. Warn the user about it.
+ NativeLibrary.displayAlertMsg(
+ targetActivity.getString(R.string.wii_speak_permission_warning),
+ targetActivity.getString(R.string.wii_speak_permission_warning_description),
+ false,
+ true,
+ false
+ )
+ }
+
+ targetActivity.requestPermissions(
+ arrayOf(Manifest.permission.RECORD_AUDIO), REQUEST_CODE_RECORD_AUDIO
+ )
+ }
+}