diff --git a/app/src/main/java/de/jrpie/android/launcher/Application.kt b/app/src/main/java/de/jrpie/android/launcher/Application.kt index e0d1d00..cf9e697 100644 --- a/app/src/main/java/de/jrpie/android/launcher/Application.kt +++ b/app/src/main/java/de/jrpie/android/launcher/Application.kt @@ -120,6 +120,8 @@ class Application : android.app.Application() { appWidgetHost = AppWidgetHost(this.applicationContext, APP_WIDGET_HOST_ID) appWidgetManager = AppWidgetManager.getInstance(this.applicationContext) + appWidgetHost.startListening() + val preferences = PreferenceManager.getDefaultSharedPreferences(this) LauncherPreferences.init(preferences, this.resources) @@ -176,4 +178,10 @@ class Application : android.app.Application() { apps.postValue(getApps(packageManager, applicationContext)) } } + + override fun onTerminate() { + appWidgetHost.stopListening() + super.onTerminate() + + } } diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/HomeActivity.kt b/app/src/main/java/de/jrpie/android/launcher/ui/HomeActivity.kt index 03c55fc..f501107 100644 --- a/app/src/main/java/de/jrpie/android/launcher/ui/HomeActivity.kt +++ b/app/src/main/java/de/jrpie/android/launcher/ui/HomeActivity.kt @@ -93,6 +93,15 @@ class HomeActivity : UIObject, Activity() { LauncherPreferences.getSharedPreferences() .registerOnSharedPreferenceChangeListener(sharedPreferencesListener) + (application as Application).appWidgetHost.startListening() + + } + + + + override fun onStop() { + (application as Application).appWidgetHost.stopListening() + super.onStop() } override fun onWindowFocusChanged(hasFocus: Boolean) { @@ -103,6 +112,7 @@ class HomeActivity : UIObject, Activity() { } } + private fun updateSettingsFallbackButtonVisibility() { // If µLauncher settings can not be reached from any action bound to an enabled gesture, // show the fallback button. @@ -121,11 +131,6 @@ class HomeActivity : UIObject, Activity() { return modifyTheme(super.getTheme()) } - override fun onPause() { - (application as Application).appWidgetHost.stopListening() - super.onPause() - } - override fun onResume() { super.onResume() @@ -156,9 +161,6 @@ class HomeActivity : UIObject, Activity() { binding.homeWidgetContainer.updateWidgets(this@HomeActivity, LauncherPreferences.widgets().widgets() ) - - - (application as Application).appWidgetHost.startListening() } override fun onDestroy() { diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/widgets/WidgetPanelActivity.kt b/app/src/main/java/de/jrpie/android/launcher/ui/widgets/WidgetPanelActivity.kt index ef7bf25..4392451 100644 --- a/app/src/main/java/de/jrpie/android/launcher/ui/widgets/WidgetPanelActivity.kt +++ b/app/src/main/java/de/jrpie/android/launcher/ui/widgets/WidgetPanelActivity.kt @@ -4,7 +4,6 @@ import android.app.Activity import android.content.res.Resources import android.os.Bundle import androidx.core.view.ViewCompat -import de.jrpie.android.launcher.Application import de.jrpie.android.launcher.R import de.jrpie.android.launcher.databinding.ActivityWidgetPanelBinding import de.jrpie.android.launcher.preferences.LauncherPreferences @@ -58,17 +57,6 @@ class WidgetPanelActivity : Activity(), UIObject { override fun onStart() { super.onStart() super.onStart() - - } - - override fun onPause() { - (application as Application).appWidgetHost.stopListening() - super.onPause() - } - - override fun onResume() { - super.onResume() - (application as Application).appWidgetHost.startListening() } override fun isHomeScreen(): Boolean { diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/widgets/manage/ManageWidgetPanelsActivity.kt b/app/src/main/java/de/jrpie/android/launcher/ui/widgets/manage/ManageWidgetPanelsActivity.kt index 89e1057..163777f 100644 --- a/app/src/main/java/de/jrpie/android/launcher/ui/widgets/manage/ManageWidgetPanelsActivity.kt +++ b/app/src/main/java/de/jrpie/android/launcher/ui/widgets/manage/ManageWidgetPanelsActivity.kt @@ -9,7 +9,6 @@ import android.widget.EditText import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity import androidx.recyclerview.widget.LinearLayoutManager -import de.jrpie.android.launcher.Application import de.jrpie.android.launcher.R import de.jrpie.android.launcher.databinding.ActivityManageWidgetPanelsBinding import de.jrpie.android.launcher.preferences.LauncherPreferences diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/widgets/manage/ManageWidgetsActivity.kt b/app/src/main/java/de/jrpie/android/launcher/ui/widgets/manage/ManageWidgetsActivity.kt index 58b47be..4b5c0c2 100644 --- a/app/src/main/java/de/jrpie/android/launcher/ui/widgets/manage/ManageWidgetsActivity.kt +++ b/app/src/main/java/de/jrpie/android/launcher/ui/widgets/manage/ManageWidgetsActivity.kt @@ -92,19 +92,13 @@ class ManageWidgetsActivity : UIObject, Activity() { } - override fun onPause() { - (application as Application).appWidgetHost.stopListening() - super.onPause() - } - override fun onResume() { super.onResume() - (application as Application).appWidgetHost.startListening() - binding.manageWidgetsContainer.updateWidgets( this, LauncherPreferences.widgets().widgets() ) + } override fun onWindowFocusChanged(hasFocus: Boolean) { diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/widgets/manage/WidgetManagerView.kt b/app/src/main/java/de/jrpie/android/launcher/ui/widgets/manage/WidgetManagerView.kt index d1c84d0..76a2572 100644 --- a/app/src/main/java/de/jrpie/android/launcher/ui/widgets/manage/WidgetManagerView.kt +++ b/app/src/main/java/de/jrpie/android/launcher/ui/widgets/manage/WidgetManagerView.kt @@ -113,7 +113,7 @@ class WidgetManagerView(widgetPanelId: Int, context: Context, attrs: AttributeSe height ) selectedWidgetOverlayView = view - selectedWidgetView = widgetViewById[view.widgetId] + selectedWidgetView = widgetViewById[view.widgetId] ?: return true startWidgetPosition = position val positionInView = start.minus(Point(position.left, position.top)) diff --git a/app/src/main/java/de/jrpie/android/launcher/widgets/AppWidget.kt b/app/src/main/java/de/jrpie/android/launcher/widgets/AppWidget.kt index a968962..22a63eb 100644 --- a/app/src/main/java/de/jrpie/android/launcher/widgets/AppWidget.kt +++ b/app/src/main/java/de/jrpie/android/launcher/widgets/AppWidget.kt @@ -41,7 +41,7 @@ class AppWidget( id, position, panelId, - panelId != WidgetPanel.HOME.id, + false, widgetProviderInfo.provider.packageName, widgetProviderInfo.provider.className, widgetProviderInfo.profile.hashCode() @@ -78,10 +78,6 @@ class AppWidget( override fun createView(activity: Activity): AppWidgetHostView? { val providerInfo = activity.getAppWidgetManager().getAppWidgetInfo(id) ?: return null - /* TODO: if providerInfo is null, the corresponding app was probably uninstalled. - There does not seem to be a way to recover the widget when the app is installed again, - hence it should be deleted. */ - val view = activity.getAppWidgetHost() .createView(activity, this.id, providerInfo)