OSDN Git Service

Abstract logic for setting components enabled / disabled android-x86-9.0-r2
authorBraden Farmer <farmerbb@gmail.com>
Mon, 23 Mar 2020 05:04:28 +0000 (23:04 -0600)
committerBraden Farmer <farmerbb@gmail.com>
Mon, 23 Mar 2020 05:04:28 +0000 (23:04 -0600)
app/src/lib/java/com/farmerbb/taskbar/lib/Taskbar.java
app/src/main/java/com/farmerbb/taskbar/activity/MainActivity.java
app/src/main/java/com/farmerbb/taskbar/fragment/AdvancedFragment.java
app/src/main/java/com/farmerbb/taskbar/fragment/DesktopModeFragment.java
app/src/main/java/com/farmerbb/taskbar/ui/DashboardController.java
app/src/main/java/com/farmerbb/taskbar/ui/StartMenuController.java
app/src/main/java/com/farmerbb/taskbar/ui/TaskbarController.java
app/src/main/java/com/farmerbb/taskbar/util/U.java
app/src/playstore/java/com/farmerbb/taskbar/receiver/DisableHomeReceiver.java
app/src/playstore/java/com/farmerbb/taskbar/receiver/EnableHomeReceiver.java

index 8ce2f57..dd5db9f 100644 (file)
 package com.farmerbb.taskbar.lib;
 
 import android.app.Activity;
-import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
-import android.content.pm.PackageManager;
 import androidx.annotation.Keep;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
@@ -27,6 +25,7 @@ import androidx.annotation.StyleRes;
 
 import com.farmerbb.taskbar.activity.MainActivity;
 import com.farmerbb.taskbar.activity.SecondaryHomeActivity;
+import com.farmerbb.taskbar.util.U;
 
 @Keep public class Taskbar {
 
@@ -88,10 +87,6 @@ import com.farmerbb.taskbar.activity.SecondaryHomeActivity;
      * @param enabled "true" to enable desktop mode, "false" to disable
      */
     @Keep public static void setEnabled(@NonNull Context context, boolean enabled) {
-        ComponentName component = new ComponentName(context, SecondaryHomeActivity.class);
-        context.getPackageManager().setComponentEnabledSetting(component, enabled
-                        ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED
-                        : PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
-                PackageManager.DONT_KILL_APP);
+        U.setComponentEnabled(context, SecondaryHomeActivity.class, enabled);
     }
 }
\ No newline at end of file
index b617b68..b301957 100644 (file)
@@ -21,7 +21,6 @@ import android.app.Fragment;
 import android.app.FragmentTransaction;
 import android.content.ActivityNotFoundException;
 import android.content.BroadcastReceiver;
-import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
@@ -117,53 +116,22 @@ public class MainActivity extends AppCompatActivity {
         editor.apply();
 
         if(!U.isLibrary(this)) {
-            ComponentName component = new ComponentName(this, HomeActivity.class);
-            getPackageManager().setComponentEnabledSetting(component,
-                    launcherEnabled && !U.isDelegatingHomeActivity(this)
-                            ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED
-                            : PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
-                    PackageManager.DONT_KILL_APP);
-
-            ComponentName component2 = new ComponentName(this, KeyboardShortcutActivity.class);
-            getPackageManager().setComponentEnabledSetting(component2,
-                    pref.getBoolean("keyboard_shortcut", false)
-                            ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED
-                            : PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
-                    PackageManager.DONT_KILL_APP);
-
-            ComponentName component3 = new ComponentName(this, ShortcutActivity.class);
-            getPackageManager().setComponentEnabledSetting(component3,
-                    U.enableFreeformModeShortcut(this)
-                            ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED
-                            : PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
-                    PackageManager.DONT_KILL_APP);
-
-            ComponentName component4 = new ComponentName(this, StartTaskbarActivity.class);
-            getPackageManager().setComponentEnabledSetting(component4,
-                    PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
-                    PackageManager.DONT_KILL_APP);
-
-            ComponentName component5 = new ComponentName(this, SecondaryHomeActivity.class);
-            getPackageManager().setComponentEnabledSetting(component5,
-                    desktopModeEnabled
-                            ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED
-                            : PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
-                    PackageManager.DONT_KILL_APP);
-
-            ComponentName component6 = new ComponentName(this, HSLActivity.class);
-            getPackageManager().setComponentEnabledSetting(component6,
-                    desktopModeEnabled
-                            ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED
-                            : PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
-                    PackageManager.DONT_KILL_APP);
+            U.setComponentEnabled(this, HomeActivity.class,
+                    launcherEnabled && !U.isDelegatingHomeActivity(this));
+
+            U.setComponentEnabled(this, KeyboardShortcutActivity.class,
+                    pref.getBoolean("keyboard_shortcut", false));
+
+            U.setComponentEnabled(this, ShortcutActivity.class,
+                    U.enableFreeformModeShortcut(this));
+
+            U.setComponentEnabled(this, StartTaskbarActivity.class, true);
+            U.setComponentEnabled(this, SecondaryHomeActivity.class, desktopModeEnabled);
+            U.setComponentEnabled(this, HSLActivity.class, desktopModeEnabled);
 
             if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
-                ComponentName component7 = new ComponentName(this, KeyboardShortcutActivityLockDevice.class);
-                getPackageManager().setComponentEnabledSetting(component7,
-                        pref.getBoolean("keyboard_shortcut", false)
-                                ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED
-                                : PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
-                        PackageManager.DONT_KILL_APP);
+                U.setComponentEnabled(this, KeyboardShortcutActivityLockDevice.class,
+                        pref.getBoolean("keyboard_shortcut", false));
             }
         }
 
index 92327cf..9d6f3a7 100644 (file)
@@ -20,7 +20,6 @@ import android.app.Activity;
 import android.app.FragmentTransaction;
 import android.content.ActivityNotFoundException;
 import android.content.BroadcastReceiver;
-import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
@@ -157,6 +156,7 @@ public class AdvancedFragment extends SettingsFragment {
     }
 
     @SuppressLint("SetTextI18n")
+    @SuppressWarnings("deprecation")
     @Override
     public boolean onPreferenceClick(final Preference p) {
         final SharedPreferences pref = U.getSharedPreferences(getActivity());
@@ -164,12 +164,8 @@ public class AdvancedFragment extends SettingsFragment {
         switch(p.getKey()) {
             case "launcher":
                 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);
+                    U.setComponentEnabled(getActivity(), HomeActivity.class,
+                            ((CheckBoxPreference) p).isChecked());
                 } else {
                     U.showPermissionDialog(getActivity());
                     ((CheckBoxPreference) p).setChecked(false);
@@ -180,16 +176,12 @@ public class AdvancedFragment extends SettingsFragment {
                 }
                 break;
             case "keyboard_shortcut":
-                ComponentName component = new ComponentName(getActivity(), KeyboardShortcutActivity.class);
-                getActivity().getPackageManager().setComponentEnabledSetting(component,
-                        ((CheckBoxPreference) p).isChecked() ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED : PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
-                        PackageManager.DONT_KILL_APP);
+                U.setComponentEnabled(getActivity(), KeyboardShortcutActivity.class,
+                        ((CheckBoxPreference) p).isChecked());
 
                 if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
-                    ComponentName component2 = new ComponentName(getActivity(), KeyboardShortcutActivityLockDevice.class);
-                    getActivity().getPackageManager().setComponentEnabledSetting(component2,
-                            ((CheckBoxPreference) p).isChecked() ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED : PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
-                            PackageManager.DONT_KILL_APP);
+                    U.setComponentEnabled(getActivity(), KeyboardShortcutActivityLockDevice.class,
+                            ((CheckBoxPreference) p).isChecked());
                 }
                 break;
             case "dashboard_grid_size":
index c1fe470..127fd39 100644 (file)
@@ -17,7 +17,6 @@ package com.farmerbb.taskbar.fragment;
 
 import android.annotation.TargetApi;
 import android.content.ActivityNotFoundException;
-import android.content.ComponentName;
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.content.pm.PackageManager;
@@ -109,19 +108,11 @@ public class DesktopModeFragment extends SettingsFragment {
     public boolean onPreferenceClick(final Preference p) {
         switch(p.getKey()) {
             case "desktop_mode":
-                ComponentName component = new ComponentName(getActivity(), SecondaryHomeActivity.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(), HSLActivity.class);
-                getActivity().getPackageManager().setComponentEnabledSetting(component2,
-                        ((CheckBoxPreference) p).isChecked()
-                                ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED
-                                : PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
-                        PackageManager.DONT_KILL_APP);
+                U.setComponentEnabled(getActivity(), SecondaryHomeActivity.class,
+                        ((CheckBoxPreference) p).isChecked());
+
+                U.setComponentEnabled(getActivity(), HSLActivity.class,
+                        ((CheckBoxPreference) p).isChecked());
 
                break;
             case "set_launcher_default":
index 996acc8..4d6693a 100644 (file)
@@ -258,11 +258,6 @@ public class DashboardController implements UIController {
 
         mAppWidgetHost.stopListening();
 
-        U.unregisterReceiver(context, toggleReceiver);
-        U.unregisterReceiver(context, addWidgetReceiver);
-        U.unregisterReceiver(context, removeWidgetReceiver);
-        U.unregisterReceiver(context, hideReceiver);
-
         U.registerReceiver(context, toggleReceiver, TaskbarIntent.ACTION_TOGGLE_DASHBOARD);
         U.registerReceiver(context, addWidgetReceiver, TaskbarIntent.ACTION_ADD_WIDGET_COMPLETED);
         U.registerReceiver(context, removeWidgetReceiver, TaskbarIntent.ACTION_REMOVE_WIDGET_COMPLETED);
index 22cd248..622e300 100644 (file)
@@ -410,13 +410,6 @@ public class StartMenuController implements UIController {
 
         textView = layout.findViewById(R.id.no_apps_found);
 
-        U.unregisterReceiver(context, toggleReceiver);
-        U.unregisterReceiver(context, hideReceiver);
-        U.unregisterReceiver(context, hideReceiverNoReset);
-        U.unregisterReceiver(context, showSpaceReceiver);
-        U.unregisterReceiver(context, hideSpaceReceiver);
-        U.unregisterReceiver(context, resetReceiver);
-
         U.registerReceiver(context, toggleReceiver, TaskbarIntent.ACTION_TOGGLE_START_MENU);
         U.registerReceiver(context, hideReceiver, TaskbarIntent.ACTION_HIDE_START_MENU);
         U.registerReceiver(context, hideReceiverNoReset, TaskbarIntent.ACTION_HIDE_START_MENU_NO_RESET);
index d370fbe..58a4cdd 100644 (file)
@@ -629,13 +629,6 @@ public class TaskbarController implements UIController {
             new Handler().postDelayed(() -> U.startTouchAbsorberActivity(context), 500);
         }
 
-        U.unregisterReceiver(context, showReceiver);
-        U.unregisterReceiver(context, hideReceiver);
-        U.unregisterReceiver(context, tempShowReceiver);
-        U.unregisterReceiver(context, tempHideReceiver);
-        U.unregisterReceiver(context, startMenuAppearReceiver);
-        U.unregisterReceiver(context, startMenuDisappearReceiver);
-
         U.registerReceiver(context, showReceiver, TaskbarIntent.ACTION_SHOW_TASKBAR);
         U.registerReceiver(context, hideReceiver, TaskbarIntent.ACTION_HIDE_TASKBAR);
         U.registerReceiver(context, tempShowReceiver, TaskbarIntent.ACTION_TEMP_SHOW_TASKBAR);
index 49acebe..4d922d6 100644 (file)
@@ -206,9 +206,7 @@ public class U {
     }
 
     public static void sendAccessibilityAction(Context context, int action, Runnable onComplete) {
-        ComponentName component = new ComponentName(context, PowerMenuService.class);
-        context.getPackageManager().setComponentEnabledSetting(component, PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
-                PackageManager.DONT_KILL_APP);
+        setComponentEnabled(context, PowerMenuService.class, true);
 
         boolean isAccessibilityServiceEnabled = isAccessibilityServiceEnabled(context);
 
@@ -1925,4 +1923,13 @@ public class U {
     public static void sendBroadcast(Context context, Intent intent) {
         LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
     }
+
+    @SuppressWarnings("rawtypes")
+    public static void setComponentEnabled(Context context, Class clazz, boolean enabled) {
+        ComponentName component = new ComponentName(context, clazz);
+        context.getPackageManager().setComponentEnabledSetting(component,
+                enabled ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED
+                        : PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
+                PackageManager.DONT_KILL_APP);
+    }
 }
index 1c495c9..a775e61 100644 (file)
 package com.farmerbb.taskbar.receiver;
 
 import android.content.BroadcastReceiver;
-import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
-import android.content.pm.PackageManager;
 import com.farmerbb.taskbar.activity.HomeActivity;
 import com.farmerbb.taskbar.content.TaskbarIntent;
 import com.farmerbb.taskbar.util.U;
@@ -34,11 +32,7 @@ public class DisableHomeReceiver extends BroadcastReceiver {
         else if(!U.isLauncherPermanentlyEnabled(context)) {
             pref.edit().putBoolean("launcher", false).apply();
 
-            ComponentName component = new ComponentName(context, HomeActivity.class);
-            context.getPackageManager().setComponentEnabledSetting(component,
-                    PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
-                    PackageManager.DONT_KILL_APP);
-
+            U.setComponentEnabled(context, HomeActivity.class, false);
             U.sendBroadcast(context, TaskbarIntent.ACTION_KILL_HOME_ACTIVITY);
             U.sendBroadcast(context, TaskbarIntent.ACTION_LAUNCHER_PREF_CHANGED);
         }
index bac6ca4..7c225c0 100644 (file)
 package com.farmerbb.taskbar.receiver;
 
 import android.content.BroadcastReceiver;
-import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
-import android.content.pm.PackageManager;
-import com.farmerbb.taskbar.BuildConfig;
 import com.farmerbb.taskbar.activity.HomeActivity;
 import com.farmerbb.taskbar.content.TaskbarIntent;
 import com.farmerbb.taskbar.util.U;
@@ -37,11 +34,7 @@ public class EnableHomeReceiver extends BroadcastReceiver {
             editor.putBoolean("launcher", true);
             editor.apply();
 
-            ComponentName component = new ComponentName(context, HomeActivity.class);
-            context.getPackageManager().setComponentEnabledSetting(component,
-                    PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
-                    PackageManager.DONT_KILL_APP);
-
+            U.setComponentEnabled(context, HomeActivity.class, true);
             U.sendBroadcast(context, TaskbarIntent.ACTION_LAUNCHER_PREF_CHANGED);
         }
     }