Browse Source

Prevent crash loop in the browser in release builds

Fixes #3132
merge-requests/2174/head
Nicolas Pomepuy 2 years ago
parent
commit
b7f605650f
  1. 15
      application/vlc-android/src/org/videolan/vlc/StartActivity.kt
  2. 11
      application/vlc-android/src/org/videolan/vlc/gui/browser/MainBrowserFragment.kt

15
application/vlc-android/src/org/videolan/vlc/StartActivity.kt

@ -31,6 +31,7 @@ import android.os.Build
import android.os.Bundle
import android.provider.MediaStore
import android.util.Log
import androidx.core.content.edit
import androidx.core.net.toUri
import androidx.fragment.app.FragmentActivity
import androidx.lifecycle.lifecycleScope
@ -128,6 +129,20 @@ class StartActivity : FragmentActivity() {
}
private fun resume() {
// if browse screen is unstable, revert back to the video screen
val preferences = Settings.getInstance(this)
if (preferences.getBoolean("navigator_screen_unstable", false)) {
Log.w(TAG, "Crash found in the browser!!!")
if (!BuildConfig.DEBUG) {
Log.w(TAG, "Reverting to the default screen")
preferences.edit(true) {
remove("fragment_id")
remove("navigator_screen_unstable")
}
}
}
val intent = intent
val action = intent?.action

11
application/vlc-android/src/org/videolan/vlc/gui/browser/MainBrowserFragment.kt

@ -28,6 +28,7 @@ import android.content.Intent
import android.os.Bundle
import android.view.*
import androidx.appcompat.view.ActionMode
import androidx.core.content.edit
import androidx.core.net.toUri
import androidx.lifecycle.ViewModel
import androidx.lifecycle.lifecycleScope
@ -160,6 +161,9 @@ class MainBrowserFragment : BaseFragment(), View.OnClickListener, CtxActionRecei
override fun getTitle() = getString(R.string.browse)
override fun onCreate(savedInstanceState: Bundle?) {
Settings.getInstance(requireActivity()).edit {
putBoolean("navigator_screen_unstable", true)
}
browserFavRepository = BrowserFavRepository.getInstance(requireContext())
networkMonitor = NetworkMonitor.getInstance(requireContext())
super.onCreate(savedInstanceState)
@ -168,6 +172,13 @@ class MainBrowserFragment : BaseFragment(), View.OnClickListener, CtxActionRecei
networkViewModel = getBrowserModel(category = TYPE_NETWORK, url = null, mocked = arguments?.parcelableList(EXTRA_FOR_ESPRESSO))
}
override fun onPause() {
super.onPause()
Settings.getInstance(requireActivity()).edit {
putBoolean("navigator_screen_unstable", false)
}
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

Loading…
Cancel
Save