[Android] Manage back press for the MainActivity
Nicolas Pomepuy
git at videolan.org
Fri Aug 22 08:01:34 UTC 2025
vlc-android | branch: master | Nicolas Pomepuy <nicolas at videolabs.io> | Mon Jul 28 11:21:49 2025 +0200| [7a73ec9a0c3c2d591e4bbb3c78221a73bdae74ff] | committer: Duncan McNamara
Manage back press for the MainActivity
> https://code.videolan.org/videolan/vlc-android/commit/7a73ec9a0c3c2d591e4bbb3c78221a73bdae74ff
---
.../src/org/videolan/vlc/gui/MainActivity.kt | 34 +++++++---------------
1 file changed, 11 insertions(+), 23 deletions(-)
diff --git a/application/vlc-android/src/org/videolan/vlc/gui/MainActivity.kt b/application/vlc-android/src/org/videolan/vlc/gui/MainActivity.kt
index d6fca2789b..c3299027ae 100644
--- a/application/vlc-android/src/org/videolan/vlc/gui/MainActivity.kt
+++ b/application/vlc-android/src/org/videolan/vlc/gui/MainActivity.kt
@@ -21,18 +21,18 @@
package org.videolan.vlc.gui
import android.annotation.SuppressLint
-import android.annotation.TargetApi
import android.app.Activity
import android.app.AlertDialog
import android.content.Intent
import android.content.pm.PackageManager
-import android.os.Build
import android.os.Bundle
import android.view.KeyEvent
import android.view.Menu
import android.view.MenuItem
import android.view.View
import android.widget.ImageView
+import androidx.activity.OnBackPressedCallback
+import androidx.activity.addCallback
import androidx.appcompat.view.ActionMode
import androidx.core.content.ContextCompat
import androidx.core.net.toUri
@@ -69,7 +69,6 @@ import org.videolan.vlc.BuildConfig
import org.videolan.vlc.R
import org.videolan.vlc.StartActivity
import org.videolan.vlc.gui.audio.AudioBrowserFragment
-import org.videolan.vlc.gui.browser.BaseBrowserFragment
import org.videolan.vlc.gui.dialogs.NotificationPermissionManager
import org.videolan.vlc.gui.dialogs.PermissionListDialog
import org.videolan.vlc.gui.dialogs.UPDATE_DATE
@@ -100,6 +99,7 @@ private const val TAG = "VLC/MainActivity"
class MainActivity : ContentActivity(),
INavigator by Navigator()
{
+ private lateinit var backPressedCallback: OnBackPressedCallback
var refreshing: Boolean = false
set(value) {
field = value
@@ -200,8 +200,16 @@ class MainActivity : ContentActivity(),
}
}
settings.putSingle(KEY_OBSOLETE_RESTORE_FILE_WARNED, true)
+ backPressedCallback = onBackPressedDispatcher.addCallback(enabled = true) {
+ if (AndroidUtil.isNougatOrLater && isInMultiWindowMode) {
+ UiTools.confirmExit(this at MainActivity)
+ return at addCallback
+ }
+ }
+ backPressedCallback.isEnabled = AndroidUtil.isNougatOrLater && isInMultiWindowMode
}
+
override fun onResume() {
super.onResume()
//Only the partial permission is granted for Android 11+
@@ -268,26 +276,6 @@ class MainActivity : ContentActivity(),
reloadPreferences()
}
- @TargetApi(Build.VERSION_CODES.N)
- override fun onBackPressed() {
-
-
- /* Close playlist search if open or Slide down the audio player if it is shown entirely. */
- if (isAudioPlayerReady && (audioPlayer.backPressed() || slideDownAudioPlayer()))
- return
-
- // If it's the directory view, a "backpressed" action shows a parent.
- val fragment = currentFragment
- if (fragment is BaseBrowserFragment && fragment.goBack()) {
- return
- }
- if (AndroidUtil.isNougatOrLater && isInMultiWindowMode) {
- UiTools.confirmExit(this)
- return
- }
- finish()
- }
-
override fun startSupportActionMode(callback: ActionMode.Callback): ActionMode? {
appBarLayout.setExpanded(true)
return super.startSupportActionMode(callback)
More information about the Android
mailing list