feature: home button always starts HomeActivity

Removed intendedSettingsPause and intendedChoosePause.
Using android:clearTaskOnLaunch together with
android:launchMode="singleTask" instead.
This makes the home button work properly.
This commit is contained in:
Josia Pietsch 2024-08-28 10:14:21 +02:00
parent 2e82fec002
commit ef16d70576
Signed by: jrpie
GPG key ID: E70B571D66986A2D
9 changed files with 3 additions and 37 deletions

View file

@ -19,6 +19,9 @@
<activity android:name=".HomeActivity" <activity android:name=".HomeActivity"
android:exported="true" android:exported="true"
android:excludeFromRecents="true"
android:clearTaskOnLaunch="true"
android:launchMode="singleTask"
android:screenOrientation="portrait" android:screenOrientation="portrait"
tools:ignore="LockedOrientationActivity"> tools:ignore="LockedOrientationActivity">
<intent-filter> <intent-filter>

View file

@ -45,10 +45,8 @@ import android.widget.Toast
import de.jrpie.android.launcher.list.ListActivity import de.jrpie.android.launcher.list.ListActivity
import de.jrpie.android.launcher.list.apps.AppInfo import de.jrpie.android.launcher.list.apps.AppInfo
import de.jrpie.android.launcher.list.apps.AppsRecyclerAdapter import de.jrpie.android.launcher.list.apps.AppsRecyclerAdapter
import de.jrpie.android.launcher.list.intendedChoosePause
import de.jrpie.android.launcher.list.other.LauncherAction import de.jrpie.android.launcher.list.other.LauncherAction
import de.jrpie.android.launcher.settings.SettingsActivity import de.jrpie.android.launcher.settings.SettingsActivity
import de.jrpie.android.launcher.settings.intendedSettingsPause
import de.jrpie.android.launcher.tutorial.TutorialActivity import de.jrpie.android.launcher.tutorial.TutorialActivity
import kotlin.contracts.contract import kotlin.contracts.contract
@ -331,7 +329,6 @@ fun resetToDefaultTheme(activity: Activity) {
saveTheme(activity,"finn") saveTheme(activity,"finn")
loadSettings(activity) loadSettings(activity)
intendedSettingsPause = true
activity.recreate() activity.recreate()
} }
@ -346,7 +343,6 @@ fun resetToDarkTheme(activity: Activity) {
saveTheme(activity,"dark") saveTheme(activity,"dark")
intendedSettingsPause = true
activity.recreate() activity.recreate()
} }
@ -369,7 +365,6 @@ fun openTutorial(activity: Activity){
fun openAppsList(activity: Activity){ fun openAppsList(activity: Activity){
val intent = Intent(activity, ListActivity::class.java) val intent = Intent(activity, ListActivity::class.java)
intent.putExtra("intention", ListActivity.ListActivityIntention.VIEW.toString()) intent.putExtra("intention", ListActivity.ListActivityIntention.VIEW.toString())
intendedSettingsPause = true
activity.startActivity(intent) activity.startActivity(intent)
} }

View file

@ -26,8 +26,6 @@ import de.jrpie.android.launcher.list.other.ListFragmentOther
import de.jrpie.android.launcher.vibrantColor import de.jrpie.android.launcher.vibrantColor
var intendedChoosePause = false // know when to close
// TODO: Better solution for this intercommunication functionality (used in list-fragments) // TODO: Better solution for this intercommunication functionality (used in list-fragments)
var intention = ListActivity.ListActivityIntention.VIEW var intention = ListActivity.ListActivityIntention.VIEW
var forGesture: String? = null var forGesture: String? = null

View file

@ -24,7 +24,6 @@ import de.jrpie.android.launcher.getSavedTheme
import de.jrpie.android.launcher.launch import de.jrpie.android.launcher.launch
import de.jrpie.android.launcher.launchApp import de.jrpie.android.launcher.launchApp
import de.jrpie.android.launcher.list.ListActivity import de.jrpie.android.launcher.list.ListActivity
import de.jrpie.android.launcher.list.intendedChoosePause
import de.jrpie.android.launcher.loadApps import de.jrpie.android.launcher.loadApps
import de.jrpie.android.launcher.openAppSettings import de.jrpie.android.launcher.openAppSettings
import de.jrpie.android.launcher.transformGrayscale import de.jrpie.android.launcher.transformGrayscale
@ -99,12 +98,10 @@ class AppsRecyclerAdapter(val activity: Activity,
popup.setOnMenuItemClickListener { popup.setOnMenuItemClickListener {
when (it.itemId) { when (it.itemId) {
R.id.app_menu_delete -> { R.id.app_menu_delete -> {
intendedChoosePause = true
uninstallApp(appPackageName, user, activity) uninstallApp(appPackageName, user, activity)
true true
} }
R.id.app_menu_info -> { R.id.app_menu_info -> {
intendedChoosePause = true
openAppSettings(appPackageName, user, activity) openAppSettings(appPackageName, user, activity)
true true
} }

View file

@ -16,9 +16,6 @@ import de.jrpie.android.launcher.settings.actions.SettingsFragmentActions
import de.jrpie.android.launcher.settings.launcher.SettingsFragmentLauncher import de.jrpie.android.launcher.settings.launcher.SettingsFragmentLauncher
import de.jrpie.android.launcher.settings.meta.SettingsFragmentMeta import de.jrpie.android.launcher.settings.meta.SettingsFragmentMeta
var intendedSettingsPause = false // know when to close
/** /**
* The [SettingsActivity] is a tabbed activity: * The [SettingsActivity] is a tabbed activity:
* *
@ -51,16 +48,6 @@ class SettingsActivity: AppCompatActivity(), UIObject {
super<UIObject>.onStart() super<UIObject>.onStart()
} }
override fun onResume() {
super.onResume()
intendedSettingsPause = false
}
override fun onPause() {
super.onPause()
if (!intendedSettingsPause) finish()
}
override fun applyTheme() { override fun applyTheme() {
//settings_system.setTextColor(vibrantColor) //settings_system.setTextColor(vibrantColor)
//settings_close.setTextColor(vibrantColor) //settings_close.setTextColor(vibrantColor)
@ -72,7 +59,6 @@ class SettingsActivity: AppCompatActivity(), UIObject {
binding.settingsClose.setOnClickListener { finish() } binding.settingsClose.setOnClickListener { finish() }
// open device settings (see https://stackoverflow.com/a/62092663/12787264) // open device settings (see https://stackoverflow.com/a/62092663/12787264)
binding.settingsSystem.setOnClickListener { binding.settingsSystem.setOnClickListener {
intendedSettingsPause = true
startActivity(Intent(Settings.ACTION_SETTINGS)) startActivity(Intent(Settings.ACTION_SETTINGS))
} }
} }

View file

@ -16,7 +16,6 @@ import de.jrpie.android.launcher.databinding.SettingsActionsBinding
import de.jrpie.android.launcher.getPreferences import de.jrpie.android.launcher.getPreferences
import de.jrpie.android.launcher.list.ListActivity import de.jrpie.android.launcher.list.ListActivity
import de.jrpie.android.launcher.setButtonColor import de.jrpie.android.launcher.setButtonColor
import de.jrpie.android.launcher.settings.intendedSettingsPause
import de.jrpie.android.launcher.vibrantColor import de.jrpie.android.launcher.vibrantColor
@ -63,14 +62,12 @@ SettingsFragmentActions : Fragment(), UIObject {
binding!!.settingsActionsButtonViewApps.setOnClickListener{ binding!!.settingsActionsButtonViewApps.setOnClickListener{
val intent = Intent(this.context, ListActivity::class.java) val intent = Intent(this.context, ListActivity::class.java)
intent.putExtra("intention", ListActivity.ListActivityIntention.VIEW.toString()) intent.putExtra("intention", ListActivity.ListActivityIntention.VIEW.toString())
intendedSettingsPause = true
startActivity(intent) startActivity(intent)
} }
binding!!.settingsActionsButtonInstallApps.setOnClickListener{ binding!!.settingsActionsButtonInstallApps.setOnClickListener{
try { try {
val intent = Intent(Intent.ACTION_MAIN) val intent = Intent(Intent.ACTION_MAIN)
intent.addCategory(Intent.CATEGORY_APP_MARKET) intent.addCategory(Intent.CATEGORY_APP_MARKET)
intendedSettingsPause = true
startActivity(intent) startActivity(intent)
} catch (e: ActivityNotFoundException) { } catch (e: ActivityNotFoundException) {
Toast.makeText(context, getString(R.string.settings_apps_toast_store_not_found), Toast.LENGTH_SHORT).show() Toast.makeText(context, getString(R.string.settings_apps_toast_store_not_found), Toast.LENGTH_SHORT).show()

View file

@ -15,7 +15,6 @@ import android.widget.ImageView
import android.widget.TextView import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import de.jrpie.android.launcher.list.other.LauncherAction import de.jrpie.android.launcher.list.other.LauncherAction
import de.jrpie.android.launcher.settings.intendedSettingsPause
import de.jrpie.android.launcher.databinding.SettingsActionsRecyclerBinding import de.jrpie.android.launcher.databinding.SettingsActionsRecyclerBinding
import java.lang.Exception import java.lang.Exception
@ -144,7 +143,6 @@ class ActionsRecyclerAdapter(val activity: Activity):
val intent = Intent(activity, ListActivity::class.java) val intent = Intent(activity, ListActivity::class.java)
intent.putExtra("intention", ListActivity.ListActivityIntention.PICK.toString()) intent.putExtra("intention", ListActivity.ListActivityIntention.PICK.toString())
intent.putExtra("forGesture", gesture.id) // for which action we choose the app intent.putExtra("forGesture", gesture.id) // for which action we choose the app
intendedSettingsPause = true
activity.startActivityForResult(intent, activity.startActivityForResult(intent,
REQUEST_CHOOSE_APP REQUEST_CHOOSE_APP
) )

View file

@ -28,7 +28,6 @@ import de.jrpie.android.launcher.resetToDefaultTheme
import de.jrpie.android.launcher.setButtonColor import de.jrpie.android.launcher.setButtonColor
import de.jrpie.android.launcher.setSwitchColor import de.jrpie.android.launcher.setSwitchColor
import de.jrpie.android.launcher.setWindowFlags import de.jrpie.android.launcher.setWindowFlags
import de.jrpie.android.launcher.settings.intendedSettingsPause
import de.jrpie.android.launcher.vibrantColor import de.jrpie.android.launcher.vibrantColor
import de.jrpie.android.launcher.databinding.SettingsLauncherBinding import de.jrpie.android.launcher.databinding.SettingsLauncherBinding
import de.jrpie.android.launcher.setDefaultHomeScreen import de.jrpie.android.launcher.setDefaultHomeScreen

View file

@ -4,7 +4,6 @@ import android.app.AlertDialog
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.provider.Settings
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
@ -14,7 +13,6 @@ import de.jrpie.android.launcher.UIObject
import de.jrpie.android.launcher.openNewTabWindow import de.jrpie.android.launcher.openNewTabWindow
import de.jrpie.android.launcher.resetSettings import de.jrpie.android.launcher.resetSettings
import de.jrpie.android.launcher.setButtonColor import de.jrpie.android.launcher.setButtonColor
import de.jrpie.android.launcher.settings.intendedSettingsPause
import de.jrpie.android.launcher.tutorial.TutorialActivity import de.jrpie.android.launcher.tutorial.TutorialActivity
import de.jrpie.android.launcher.vibrantColor import de.jrpie.android.launcher.vibrantColor
import de.jrpie.android.launcher.databinding.SettingsMetaBinding import de.jrpie.android.launcher.databinding.SettingsMetaBinding
@ -70,7 +68,6 @@ class SettingsFragmentMeta : Fragment(), UIObject {
override fun setOnClicks() { override fun setOnClicks() {
binding.settingsMetaButtonViewTutorial.setOnClickListener { binding.settingsMetaButtonViewTutorial.setOnClickListener {
intendedSettingsPause = true
startActivity(Intent(this.context, TutorialActivity::class.java)) startActivity(Intent(this.context, TutorialActivity::class.java))
} }
@ -92,7 +89,6 @@ class SettingsFragmentMeta : Fragment(), UIObject {
// report a bug // report a bug
binding.settingsMetaButtonReportBug.setOnClickListener { binding.settingsMetaButtonReportBug.setOnClickListener {
intendedSettingsPause = true
openNewTabWindow( openNewTabWindow(
getString(R.string.settings_meta_report_bug_link), getString(R.string.settings_meta_report_bug_link),
requireContext() requireContext()
@ -103,7 +99,6 @@ class SettingsFragmentMeta : Fragment(), UIObject {
// contact developer // contact developer
binding.settingsMetaButtonContact.setOnClickListener { binding.settingsMetaButtonContact.setOnClickListener {
intendedSettingsPause = true
openNewTabWindow( openNewTabWindow(
getString(R.string.settings_meta_contact_url), getString(R.string.settings_meta_contact_url),
requireContext() requireContext()
@ -112,7 +107,6 @@ class SettingsFragmentMeta : Fragment(), UIObject {
// contact fork developer // contact fork developer
binding.settingsMetaButtonForkContact.setOnClickListener { binding.settingsMetaButtonForkContact.setOnClickListener {
intendedSettingsPause = true
openNewTabWindow( openNewTabWindow(
getString(R.string.settings_meta_fork_contact_url), getString(R.string.settings_meta_fork_contact_url),
requireContext() requireContext()
@ -121,7 +115,6 @@ class SettingsFragmentMeta : Fragment(), UIObject {
// privacy policy // privacy policy
binding.settingsMetaButtonPrivacy.setOnClickListener { binding.settingsMetaButtonPrivacy.setOnClickListener {
intendedSettingsPause = true
openNewTabWindow( openNewTabWindow(
getString(R.string.settings_meta_privacy_url), getString(R.string.settings_meta_privacy_url),
requireContext() requireContext()