summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java
diff options
context:
space:
mode:
authorOatmealDome <OatmealDome@users.noreply.github.com>2026-03-21 12:14:53 -0400
committerGitHub <noreply@github.com>2026-03-21 12:14:53 -0400
commit0e92a147036fa9ab8a953b40723f43142c2e5d7b (patch)
tree99cc47f7e67e0b24b0985e5d38490e6a5486fe77 /Source/Android/app/src/main/java
parentd5729312133e11e300d7211b17bf09e63f231595 (diff)
parent385ac491095b3196d6999e29eb76921cdc09c736 (diff)
Merge pull request #14488 from Simonx22/android/convert-permissionshandler-to-kotlin
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
+ )
+ }
+}