From 3af3b6d08b17b7e7c18f7c8553bcbb8e929ea9a7 Mon Sep 17 00:00:00 2001 From: Braden Farmer Date: Wed, 23 Oct 2019 21:49:46 -0600 Subject: [PATCH] [WIP] Support Android 10 desktop mode --- app/src/androidx86/AndroidManifest.xml | 11 +++++++ .../taskbar/activity/HomeActivityDelegate.java | 35 ++++++++++++++-------- .../activity/InvisibleActivityFreeform.java | 4 +-- .../farmerbb/taskbar/activity/MainActivity.java | 11 +++++-- .../SecondaryHomeActivity.java} | 9 ++---- .../taskbar/fragment/AdvancedFragment.java | 8 ++++- .../farmerbb/taskbar/receiver/StartReceiver.java | 2 +- .../taskbar/service/NotificationService.java | 2 +- .../taskbar/service/QuickSettingsTileService.java | 2 +- .../farmerbb/taskbar/ui/DashboardController.java | 6 ++-- .../farmerbb/taskbar/ui/StartMenuController.java | 6 ++-- .../com/farmerbb/taskbar/ui/TaskbarController.java | 7 +++-- .../com/farmerbb/taskbar/util/LauncherHelper.java | 26 +++++++++++++--- app/src/main/java/com/farmerbb/taskbar/util/U.java | 11 ++++--- app/src/playstore/AndroidManifest.xml | 11 +++++++ .../taskbar/receiver/DisableHomeReceiver.java | 6 ++++ .../taskbar/receiver/EnableHomeReceiver.java | 8 ++++- 17 files changed, 120 insertions(+), 45 deletions(-) rename app/src/main/java/com/farmerbb/taskbar/{util/FeatureFlags.java => activity/SecondaryHomeActivity.java} (78%) diff --git a/app/src/androidx86/AndroidManifest.xml b/app/src/androidx86/AndroidManifest.xml index f8cc4c0c..51c2359f 100644 --- a/app/src/androidx86/AndroidManifest.xml +++ b/app/src/androidx86/AndroidManifest.xml @@ -110,6 +110,17 @@ + + + + + + + diff --git a/app/src/main/java/com/farmerbb/taskbar/activity/HomeActivityDelegate.java b/app/src/main/java/com/farmerbb/taskbar/activity/HomeActivityDelegate.java index e0ae0b31..707dac7b 100644 --- a/app/src/main/java/com/farmerbb/taskbar/activity/HomeActivityDelegate.java +++ b/app/src/main/java/com/farmerbb/taskbar/activity/HomeActivityDelegate.java @@ -67,7 +67,6 @@ import com.farmerbb.taskbar.util.AppEntry; import com.farmerbb.taskbar.util.CompatUtils; import com.farmerbb.taskbar.util.DesktopIconInfo; import com.farmerbb.taskbar.util.DisplayInfo; -import com.farmerbb.taskbar.util.FeatureFlags; import com.farmerbb.taskbar.util.FreeformHackHelper; import com.farmerbb.taskbar.util.IconCache; import com.farmerbb.taskbar.util.LauncherHelper; @@ -260,7 +259,9 @@ public class HomeActivityDelegate extends AppCompatActivity implements UIHost { layout.setFitsSystemWindows(true); - if((this instanceof HomeActivity || U.isLauncherPermanentlyEnabled(this)) + if((this instanceof HomeActivity || + this instanceof SecondaryHomeActivity + || U.isLauncherPermanentlyEnabled(this)) && !U.isChromeOs(this)) { setContentView(layout); pref.edit().putBoolean("launcher", true).apply(); @@ -280,7 +281,7 @@ public class HomeActivityDelegate extends AppCompatActivity implements UIHost { lbm.registerReceiver(freeformToggleReceiver, intentFilter); - if(FeatureFlags.HOME_ACTIVITY_UI_HOST) + if(this instanceof SecondaryHomeActivity) lbm.registerReceiver(restartReceiver, new IntentFilter("com.farmerbb.taskbar.RESTART")); if(isDesktopIconsEnabled) { @@ -335,15 +336,14 @@ public class HomeActivityDelegate extends AppCompatActivity implements UIHost { LocalBroadcastManager.getInstance(this).sendBroadcast(new Intent("com.farmerbb.taskbar.HIDE_START_MENU")); - if(U.canDrawOverlays(this, true)) { + if(U.canDrawOverlays(this, this instanceof SecondaryHomeActivity)) { if(!U.canBootToFreeform(this)) { - final LauncherHelper helper = LauncherHelper.getInstance(); - helper.setOnHomeScreen(true); + setOnHomeScreen(true); if(forceTaskbarStart) { forceTaskbarStart = false; new Handler().postDelayed(() -> { - helper.setOnHomeScreen(true); + setOnHomeScreen(true); startTaskbar(); }, 250); } else @@ -369,7 +369,7 @@ public class HomeActivityDelegate extends AppCompatActivity implements UIHost { null); } - if(FeatureFlags.HOME_ACTIVITY_UI_HOST) { + if(this instanceof SecondaryHomeActivity) { // Stop any currently running services and switch to using HomeActivityDelegate as UI host stopService(new Intent(this, TaskbarService.class)); stopService(new Intent(this, StartMenuService.class)); @@ -409,10 +409,10 @@ public class HomeActivityDelegate extends AppCompatActivity implements UIHost { SharedPreferences pref = U.getSharedPreferences(this); if(!U.canBootToFreeform(this)) { - LauncherHelper.getInstance().setOnHomeScreen(false); + setOnHomeScreen(false); LocalBroadcastManager.getInstance(this).sendBroadcast(new Intent("com.farmerbb.taskbar.TEMP_HIDE_TASKBAR")); - if(FeatureFlags.HOME_ACTIVITY_UI_HOST) { + if(this instanceof SecondaryHomeActivity) { if(taskbarController != null) taskbarController.onDestroyHost(this); if(startMenuController != null) startMenuController.onDestroyHost(this); if(dashboardController != null) dashboardController.onDestroyHost(this); @@ -452,7 +452,7 @@ public class HomeActivityDelegate extends AppCompatActivity implements UIHost { lbm.unregisterReceiver(forceTaskbarStartReceiver); lbm.unregisterReceiver(freeformToggleReceiver); - if(FeatureFlags.HOME_ACTIVITY_UI_HOST) + if(this instanceof SecondaryHomeActivity) lbm.unregisterReceiver(restartReceiver); if(isDesktopIconsEnabled) { @@ -478,9 +478,9 @@ public class HomeActivityDelegate extends AppCompatActivity implements UIHost { } private void killHomeActivity() { - LauncherHelper.getInstance().setOnHomeScreen(false); + setOnHomeScreen(false); - if(FeatureFlags.HOME_ACTIVITY_UI_HOST) { + if(this instanceof SecondaryHomeActivity) { if(taskbarController != null) taskbarController.onDestroyHost(this); if(startMenuController != null) startMenuController.onDestroyHost(this); if(dashboardController != null) dashboardController.onDestroyHost(this); @@ -908,4 +908,13 @@ public class HomeActivityDelegate extends AppCompatActivity implements UIHost { return true; } } + + private void setOnHomeScreen(boolean value) { + LauncherHelper helper = LauncherHelper.getInstance(); + + if(this instanceof SecondaryHomeActivity) + helper.setOnSecondaryHomeScreen(value); + else + helper.setOnPrimaryHomeScreen(value); + } } diff --git a/app/src/main/java/com/farmerbb/taskbar/activity/InvisibleActivityFreeform.java b/app/src/main/java/com/farmerbb/taskbar/activity/InvisibleActivityFreeform.java index 77bcc24f..16e38505 100644 --- a/app/src/main/java/com/farmerbb/taskbar/activity/InvisibleActivityFreeform.java +++ b/app/src/main/java/com/farmerbb/taskbar/activity/InvisibleActivityFreeform.java @@ -190,7 +190,7 @@ public class InvisibleActivityFreeform extends Activity { FreeformHackHelper.getInstance().setInFreeformWorkspace(true); if(U.launcherIsDefault(this) && !U.isChromeOs(this)) { - LauncherHelper.getInstance().setOnHomeScreen(true); + LauncherHelper.getInstance().setOnPrimaryHomeScreen(true); bootToFreeform = true; SharedPreferences pref = U.getSharedPreferences(this); @@ -244,7 +244,7 @@ public class InvisibleActivityFreeform extends Activity { possiblyHideTaskbar(); if(bootToFreeform && !finish) { - LauncherHelper.getInstance().setOnHomeScreen(false); + LauncherHelper.getInstance().setOnPrimaryHomeScreen(false); bootToFreeform = false; // Stop the Taskbar and Start Menu services if they should normally not be active diff --git a/app/src/main/java/com/farmerbb/taskbar/activity/MainActivity.java b/app/src/main/java/com/farmerbb/taskbar/activity/MainActivity.java index 07111fb5..942c0375 100644 --- a/app/src/main/java/com/farmerbb/taskbar/activity/MainActivity.java +++ b/app/src/main/java/com/farmerbb/taskbar/activity/MainActivity.java @@ -91,7 +91,7 @@ public class MainActivity extends AppCompatActivity { editor.putBoolean("taskbar_active", false); // Ensure that components that should be enabled are enabled properly - boolean launcherEnabled = (pref.getBoolean("launcher", false) && U.canDrawOverlays(this, true)) + boolean launcherEnabled = (pref.getBoolean("launcher", false) && U.canDrawOverlays(this)) || U.isLauncherPermanentlyEnabled(this); editor.putBoolean("launcher", launcherEnabled); @@ -123,6 +123,13 @@ public class MainActivity extends AppCompatActivity { PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); + ComponentName component5 = new ComponentName(this, SecondaryHomeActivity.class); + getPackageManager().setComponentEnabledSetting(component5, + launcherEnabled && !U.isDelegatingHomeActivity(this) + ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED + : PackageManager.COMPONENT_ENABLED_STATE_DISABLED, + PackageManager.DONT_KILL_APP); + if(!launcherEnabled) LocalBroadcastManager.getInstance(this).sendBroadcast(new Intent("com.farmerbb.taskbar.KILL_HOME_ACTIVITY")); @@ -172,7 +179,7 @@ public class MainActivity extends AppCompatActivity { theSwitch.setOnCheckedChangeListener((compoundButton, b) -> { if(b) { - if(U.canDrawOverlays(this, false)) { + if(U.canDrawOverlays(this)) { boolean firstRun = pref.getBoolean("first_run", true); startTaskbarService(); diff --git a/app/src/main/java/com/farmerbb/taskbar/util/FeatureFlags.java b/app/src/main/java/com/farmerbb/taskbar/activity/SecondaryHomeActivity.java similarity index 78% rename from app/src/main/java/com/farmerbb/taskbar/util/FeatureFlags.java rename to app/src/main/java/com/farmerbb/taskbar/activity/SecondaryHomeActivity.java index 0f056eac..ea8287ba 100644 --- a/app/src/main/java/com/farmerbb/taskbar/util/FeatureFlags.java +++ b/app/src/main/java/com/farmerbb/taskbar/activity/SecondaryHomeActivity.java @@ -13,11 +13,6 @@ * limitations under the License. */ -package com.farmerbb.taskbar.util; +package com.farmerbb.taskbar.activity; -public class FeatureFlags { - - private FeatureFlags() {} - - public static final boolean HOME_ACTIVITY_UI_HOST = false; -} \ No newline at end of file +public class SecondaryHomeActivity extends HomeActivityDelegate {} \ No newline at end of file diff --git a/app/src/main/java/com/farmerbb/taskbar/fragment/AdvancedFragment.java b/app/src/main/java/com/farmerbb/taskbar/fragment/AdvancedFragment.java index 52d0e567..9111f313 100644 --- a/app/src/main/java/com/farmerbb/taskbar/fragment/AdvancedFragment.java +++ b/app/src/main/java/com/farmerbb/taskbar/fragment/AdvancedFragment.java @@ -44,6 +44,7 @@ import com.farmerbb.taskbar.BuildConfig; import com.farmerbb.taskbar.R; import com.farmerbb.taskbar.activity.ClearDataActivity; import com.farmerbb.taskbar.activity.NavigationBarButtonsActivity; +import com.farmerbb.taskbar.activity.SecondaryHomeActivity; import com.farmerbb.taskbar.activity.dark.ClearDataActivityDark; import com.farmerbb.taskbar.activity.HomeActivity; import com.farmerbb.taskbar.activity.KeyboardShortcutActivity; @@ -164,11 +165,16 @@ public class AdvancedFragment extends SettingsFragment implements Preference.OnP startActivity(clearIntent); break; case "launcher": - if(U.canDrawOverlays(getActivity(), true)) { + if(U.canDrawOverlays(getActivity())) { ComponentName component = new ComponentName(getActivity(), HomeActivity.class); getActivity().getPackageManager().setComponentEnabledSetting(component, ((CheckBoxPreference) p).isChecked() ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED : PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); + + ComponentName component2 = new ComponentName(getActivity(), SecondaryHomeActivity.class); + getActivity().getPackageManager().setComponentEnabledSetting(component2, + ((CheckBoxPreference) p).isChecked() ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED : PackageManager.COMPONENT_ENABLED_STATE_DISABLED, + PackageManager.DONT_KILL_APP); } else { U.showPermissionDialog(getActivity()); ((CheckBoxPreference) p).setChecked(false); diff --git a/app/src/main/java/com/farmerbb/taskbar/receiver/StartReceiver.java b/app/src/main/java/com/farmerbb/taskbar/receiver/StartReceiver.java index a57a8ed5..092edd20 100644 --- a/app/src/main/java/com/farmerbb/taskbar/receiver/StartReceiver.java +++ b/app/src/main/java/com/farmerbb/taskbar/receiver/StartReceiver.java @@ -33,7 +33,7 @@ public class StartReceiver extends BroadcastReceiver { boolean taskbarNotActive = !U.isServiceRunning(context, NotificationService.class); boolean taskbarActiveButHidden = !taskbarNotActive && pref.getBoolean("is_hidden", false); - if(!U.canDrawOverlays(context, false)) { + if(!U.canDrawOverlays(context)) { new Handler().postDelayed(() -> { Intent intent2 = new Intent(context, DummyActivity.class); intent2.putExtra("show_permission_dialog", true); diff --git a/app/src/main/java/com/farmerbb/taskbar/service/NotificationService.java b/app/src/main/java/com/farmerbb/taskbar/service/NotificationService.java index 1b4a96bb..746aafb7 100644 --- a/app/src/main/java/com/farmerbb/taskbar/service/NotificationService.java +++ b/app/src/main/java/com/farmerbb/taskbar/service/NotificationService.java @@ -88,7 +88,7 @@ public class NotificationService extends Service { SharedPreferences pref = U.getSharedPreferences(this); if(pref.getBoolean("taskbar_active", false)) { - if(U.canDrawOverlays(this, false)) { + if(U.canDrawOverlays(this)) { isHidden = U.getSharedPreferences(this).getBoolean("is_hidden", false); Intent intent = new Intent(this, MainActivity.class); diff --git a/app/src/main/java/com/farmerbb/taskbar/service/QuickSettingsTileService.java b/app/src/main/java/com/farmerbb/taskbar/service/QuickSettingsTileService.java index 064ef7f3..91916218 100644 --- a/app/src/main/java/com/farmerbb/taskbar/service/QuickSettingsTileService.java +++ b/app/src/main/java/com/farmerbb/taskbar/service/QuickSettingsTileService.java @@ -58,7 +58,7 @@ public class QuickSettingsTileService extends TileService { ? R.drawable.ic_system : R.drawable.ic_allapps)); - if(U.canDrawOverlays(this, false)) + if(U.canDrawOverlays(this)) tile.setState(U.isServiceRunning(this, NotificationService.class) ? Tile.STATE_ACTIVE : Tile.STATE_INACTIVE); diff --git a/app/src/main/java/com/farmerbb/taskbar/ui/DashboardController.java b/app/src/main/java/com/farmerbb/taskbar/ui/DashboardController.java index b9094020..d0de8809 100644 --- a/app/src/main/java/com/farmerbb/taskbar/ui/DashboardController.java +++ b/app/src/main/java/com/farmerbb/taskbar/ui/DashboardController.java @@ -58,7 +58,7 @@ import android.widget.Toast; import com.farmerbb.taskbar.R; import com.farmerbb.taskbar.activity.DashboardActivity; -import com.farmerbb.taskbar.activity.HomeActivityDelegate; +import com.farmerbb.taskbar.activity.SecondaryHomeActivity; import com.farmerbb.taskbar.activity.dark.DashboardActivityDark; import com.farmerbb.taskbar.util.DashboardHelper; import com.farmerbb.taskbar.widget.DashboardCell; @@ -165,7 +165,7 @@ public class DashboardController implements UIController { SharedPreferences pref = U.getSharedPreferences(context); if(pref.getBoolean("dashboard", false)) { if(pref.getBoolean("taskbar_active", false) || LauncherHelper.getInstance().isOnHomeScreen()) { - if(U.canDrawOverlays(context, host instanceof HomeActivityDelegate)) + if(U.canDrawOverlays(context, host instanceof SecondaryHomeActivity)) drawDashboard(host); else { pref.edit().putBoolean("taskbar_active", false).apply(); @@ -422,7 +422,7 @@ public class DashboardController implements UIController { } catch (IllegalArgumentException e) { /* Gracefully fail */ } SharedPreferences pref = U.getSharedPreferences(context); - if(U.canDrawOverlays(context, host instanceof HomeActivityDelegate)) + if(U.canDrawOverlays(context, host instanceof SecondaryHomeActivity)) drawDashboard(host); else { pref.edit().putBoolean("taskbar_active", false).apply(); diff --git a/app/src/main/java/com/farmerbb/taskbar/ui/StartMenuController.java b/app/src/main/java/com/farmerbb/taskbar/ui/StartMenuController.java index 3bfc731a..acf4dea4 100644 --- a/app/src/main/java/com/farmerbb/taskbar/ui/StartMenuController.java +++ b/app/src/main/java/com/farmerbb/taskbar/ui/StartMenuController.java @@ -57,9 +57,9 @@ import android.widget.ListAdapter; import android.widget.TextView; import com.farmerbb.taskbar.R; -import com.farmerbb.taskbar.activity.HomeActivityDelegate; import com.farmerbb.taskbar.activity.InvisibleActivity; import com.farmerbb.taskbar.activity.InvisibleActivityAlt; +import com.farmerbb.taskbar.activity.SecondaryHomeActivity; import com.farmerbb.taskbar.adapter.StartMenuAdapter; import com.farmerbb.taskbar.util.AppEntry; import com.farmerbb.taskbar.util.Blacklist; @@ -170,7 +170,7 @@ public class StartMenuController implements UIController { SharedPreferences pref = U.getSharedPreferences(context); if(pref.getBoolean("taskbar_active", false) || LauncherHelper.getInstance().isOnHomeScreen()) { - if(U.canDrawOverlays(context, host instanceof HomeActivityDelegate)) + if(U.canDrawOverlays(context, host instanceof SecondaryHomeActivity)) drawStartMenu(host); else { pref.edit().putBoolean("taskbar_active", false).apply(); @@ -719,7 +719,7 @@ public class StartMenuController implements UIController { host.removeView(layout); } catch (IllegalArgumentException e) { /* Gracefully fail */ } - if(U.canDrawOverlays(context, host instanceof HomeActivityDelegate)) + if(U.canDrawOverlays(context, host instanceof SecondaryHomeActivity)) drawStartMenu(host); else { SharedPreferences pref = U.getSharedPreferences(context); diff --git a/app/src/main/java/com/farmerbb/taskbar/ui/TaskbarController.java b/app/src/main/java/com/farmerbb/taskbar/ui/TaskbarController.java index 3fbccc0c..e667451c 100644 --- a/app/src/main/java/com/farmerbb/taskbar/ui/TaskbarController.java +++ b/app/src/main/java/com/farmerbb/taskbar/ui/TaskbarController.java @@ -90,6 +90,7 @@ import com.farmerbb.taskbar.activity.MainActivity; import com.farmerbb.taskbar.R; import com.farmerbb.taskbar.activity.HomeActivity; import com.farmerbb.taskbar.activity.InvisibleActivityFreeform; +import com.farmerbb.taskbar.activity.SecondaryHomeActivity; import com.farmerbb.taskbar.util.AppEntry; import com.farmerbb.taskbar.util.DisplayInfo; import com.farmerbb.taskbar.util.FreeformHackHelper; @@ -216,7 +217,7 @@ public class TaskbarController implements UIController { public void onCreateHost(UIHost host) { SharedPreferences pref = U.getSharedPreferences(context); if(pref.getBoolean("taskbar_active", false) || LauncherHelper.getInstance().isOnHomeScreen()) { - if(U.canDrawOverlays(context, host instanceof HomeActivityDelegate)) + if(U.canDrawOverlays(context, host instanceof SecondaryHomeActivity)) drawTaskbar(host); else { pref.edit().putBoolean("taskbar_active", false).apply(); @@ -789,6 +790,8 @@ public class TaskbarController implements UIController { if(!(eventCache.getPackageName().contains(BuildConfig.BASE_APPLICATION_ID) && !eventCache.getClassName().equals(MainActivity.class.getCanonicalName()) && !eventCache.getClassName().equals(HomeActivity.class.getCanonicalName()) + && !eventCache.getClassName().equals(HomeActivityDelegate.class.getCanonicalName()) + && !eventCache.getClassName().equals(SecondaryHomeActivity.class.getCanonicalName()) && !eventCache.getClassName().equals(InvisibleActivityFreeform.class.getCanonicalName()))) currentForegroundApp = eventCache.getPackageName(); } @@ -1317,7 +1320,7 @@ public class TaskbarController implements UIController { currentTaskbarPosition = 0; - if(U.canDrawOverlays(context, host instanceof HomeActivityDelegate)) + if(U.canDrawOverlays(context, host instanceof SecondaryHomeActivity)) drawTaskbar(host); else { SharedPreferences pref = U.getSharedPreferences(context); diff --git a/app/src/main/java/com/farmerbb/taskbar/util/LauncherHelper.java b/app/src/main/java/com/farmerbb/taskbar/util/LauncherHelper.java index e9f2f96f..7313af6c 100644 --- a/app/src/main/java/com/farmerbb/taskbar/util/LauncherHelper.java +++ b/app/src/main/java/com/farmerbb/taskbar/util/LauncherHelper.java @@ -17,7 +17,8 @@ package com.farmerbb.taskbar.util; public class LauncherHelper { - private boolean onHomeScreen = false; + private boolean onPrimaryHomeScreen = false; + private boolean onSecondaryHomeScreen = false; private static LauncherHelper theInstance; @@ -30,10 +31,27 @@ public class LauncherHelper { } public boolean isOnHomeScreen() { - return onHomeScreen; + return isOnHomeScreen(true, true); } - public void setOnHomeScreen(boolean value) { - onHomeScreen = value; + public boolean isOnHomeScreen(boolean checkPrimary, boolean checkSecondary) { + if(checkPrimary && checkSecondary) + return onPrimaryHomeScreen || onSecondaryHomeScreen; + + if(!checkPrimary && checkSecondary) + return onSecondaryHomeScreen; + + if(checkPrimary) + return onPrimaryHomeScreen; + + return false; + } + + public void setOnPrimaryHomeScreen(boolean value) { + onPrimaryHomeScreen = value; + } + + public void setOnSecondaryHomeScreen(boolean value) { + onSecondaryHomeScreen = value; } } \ No newline at end of file diff --git a/app/src/main/java/com/farmerbb/taskbar/util/U.java b/app/src/main/java/com/farmerbb/taskbar/util/U.java index d92f858e..089813c6 100644 --- a/app/src/main/java/com/farmerbb/taskbar/util/U.java +++ b/app/src/main/java/com/farmerbb/taskbar/util/U.java @@ -922,8 +922,7 @@ public class U { } public static boolean isServiceRunning(Context context, Class cls) { - if(LauncherHelper.getInstance().isOnHomeScreen() - && FeatureFlags.HOME_ACTIVITY_UI_HOST + if(LauncherHelper.getInstance().isOnHomeScreen(false, true) && (cls.equals(TaskbarService.class) || cls.equals(StartMenuService.class) || cls.equals(DashboardService.class))) @@ -964,9 +963,13 @@ public class U { return pref.getInt("accent_color", context.getResources().getInteger(R.integer.translucent_white)); } + public static boolean canDrawOverlays(Context context) { + return canDrawOverlays(context, false); + } + @TargetApi(Build.VERSION_CODES.M) - public static boolean canDrawOverlays(Context context, boolean forHomeScreen) { - return (forHomeScreen && FeatureFlags.HOME_ACTIVITY_UI_HOST && !canBootToFreeform(context)) + public static boolean canDrawOverlays(Context context, boolean isSecondaryHomeScreen) { + return isSecondaryHomeScreen || Build.VERSION.SDK_INT < Build.VERSION_CODES.M || Settings.canDrawOverlays(context); } diff --git a/app/src/playstore/AndroidManifest.xml b/app/src/playstore/AndroidManifest.xml index 0401a5ed..d88ee1dd 100644 --- a/app/src/playstore/AndroidManifest.xml +++ b/app/src/playstore/AndroidManifest.xml @@ -123,6 +123,17 @@ + + + + + + + diff --git a/app/src/playstore/java/com/farmerbb/taskbar/receiver/DisableHomeReceiver.java b/app/src/playstore/java/com/farmerbb/taskbar/receiver/DisableHomeReceiver.java index 121461ac..07617d37 100644 --- a/app/src/playstore/java/com/farmerbb/taskbar/receiver/DisableHomeReceiver.java +++ b/app/src/playstore/java/com/farmerbb/taskbar/receiver/DisableHomeReceiver.java @@ -24,6 +24,7 @@ import android.content.pm.PackageManager; import android.support.v4.content.LocalBroadcastManager; import com.farmerbb.taskbar.activity.HomeActivity; +import com.farmerbb.taskbar.activity.SecondaryHomeActivity; import com.farmerbb.taskbar.util.U; public class DisableHomeReceiver extends BroadcastReceiver { @@ -40,6 +41,11 @@ public class DisableHomeReceiver extends BroadcastReceiver { PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); + ComponentName component2 = new ComponentName(context, SecondaryHomeActivity.class); + context.getPackageManager().setComponentEnabledSetting(component2, + PackageManager.COMPONENT_ENABLED_STATE_DISABLED, + PackageManager.DONT_KILL_APP); + LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(context); lbm.sendBroadcast(new Intent("com.farmerbb.taskbar.KILL_HOME_ACTIVITY")); lbm.sendBroadcast(new Intent("com.farmerbb.taskbar.LAUNCHER_PREF_CHANGED")); diff --git a/app/src/playstore/java/com/farmerbb/taskbar/receiver/EnableHomeReceiver.java b/app/src/playstore/java/com/farmerbb/taskbar/receiver/EnableHomeReceiver.java index 0c983cb4..1e8a903a 100644 --- a/app/src/playstore/java/com/farmerbb/taskbar/receiver/EnableHomeReceiver.java +++ b/app/src/playstore/java/com/farmerbb/taskbar/receiver/EnableHomeReceiver.java @@ -24,6 +24,7 @@ import android.content.pm.PackageManager; import android.support.v4.content.LocalBroadcastManager; import com.farmerbb.taskbar.activity.HomeActivity; +import com.farmerbb.taskbar.activity.SecondaryHomeActivity; import com.farmerbb.taskbar.util.U; public class EnableHomeReceiver extends BroadcastReceiver { @@ -32,7 +33,7 @@ public class EnableHomeReceiver extends BroadcastReceiver { SharedPreferences pref = U.getSharedPreferences(context); if(intent.hasExtra("secondscreen") && pref.getBoolean("launcher", false)) pref.edit().putBoolean("skip_disable_home_receiver", true).apply(); - else if(U.canDrawOverlays(context, true)) { + else if(U.canDrawOverlays(context)) { SharedPreferences.Editor editor = pref.edit(); editor.putBoolean("launcher", true); editor.apply(); @@ -42,6 +43,11 @@ public class EnableHomeReceiver extends BroadcastReceiver { PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); + ComponentName component2 = new ComponentName(context, SecondaryHomeActivity.class); + context.getPackageManager().setComponentEnabledSetting(component2, + PackageManager.COMPONENT_ENABLED_STATE_ENABLED, + PackageManager.DONT_KILL_APP); + LocalBroadcastManager.getInstance(context) .sendBroadcast(new Intent("com.farmerbb.taskbar.LAUNCHER_PREF_CHANGED")); } -- 2.11.0