OSDN Git Service

Always specify forHomeScreen parameter for U.canDrawOverlays()
authorBraden Farmer <farmerbb@gmail.com>
Wed, 3 Jul 2019 05:49:54 +0000 (23:49 -0600)
committerBraden Farmer <farmerbb@gmail.com>
Wed, 3 Jul 2019 05:49:54 +0000 (23:49 -0600)
app/src/main/java/com/farmerbb/taskbar/activity/HomeActivityDelegate.java
app/src/main/java/com/farmerbb/taskbar/activity/MainActivity.java
app/src/main/java/com/farmerbb/taskbar/receiver/StartReceiver.java
app/src/main/java/com/farmerbb/taskbar/service/NotificationService.java
app/src/main/java/com/farmerbb/taskbar/service/QuickSettingsTileService.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/EnableHomeReceiver.java

index dc21a4d..1879b2b 100644 (file)
@@ -379,6 +379,6 @@ public class HomeActivityDelegate extends Activity implements Host {
 
     @Override
     public void terminate() {
-        layout.removeAllViews();
+        // no-op
     }
 }
index 0bab3c6..28df0d1 100644 (file)
@@ -92,7 +92,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))
+        boolean launcherEnabled = (pref.getBoolean("launcher", false) && U.canDrawOverlays(this, true))
                 || U.isLauncherPermanentlyEnabled(this);
 
         editor.putBoolean("launcher", launcherEnabled);
@@ -173,7 +173,7 @@ public class MainActivity extends AppCompatActivity {
 
             theSwitch.setOnCheckedChangeListener((compoundButton, b) -> {
                 if(b) {
-                    if(U.canDrawOverlays(this)) {
+                    if(U.canDrawOverlays(this, false)) {
                         boolean firstRun = pref.getBoolean("first_run", true);
                         startTaskbarService();
 
index 092edd2..a57a8ed 100644 (file)
@@ -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)) {
+        if(!U.canDrawOverlays(context, false)) {
             new Handler().postDelayed(() -> {
                 Intent intent2 = new Intent(context, DummyActivity.class);
                 intent2.putExtra("show_permission_dialog", true);
index 2ef6a4e..88fe680 100644 (file)
@@ -88,7 +88,7 @@ public class NotificationService extends Service {
 
         SharedPreferences pref = U.getSharedPreferences(this);
         if(pref.getBoolean("taskbar_active", false)) {
-            if(U.canDrawOverlays(this)) {
+            if(U.canDrawOverlays(this, false)) {
                 isHidden = U.getSharedPreferences(this).getBoolean("is_hidden", false);
 
                 Intent intent = new Intent(this, MainActivity.class);
index f3cba96..7ac6e24 100644 (file)
@@ -57,7 +57,7 @@ public class QuickSettingsTileService extends TileService {
                     ? R.drawable.ic_system
                     : R.drawable.ic_allapps));
 
-            if(U.canDrawOverlays(this))
+            if(U.canDrawOverlays(this, false))
                 tile.setState(U.isServiceRunning(this, NotificationService.class)
                         ? Tile.STATE_ACTIVE
                         : Tile.STATE_INACTIVE);
index ace7e81..1127730 100644 (file)
@@ -58,6 +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.dark.DashboardActivityDark;
 import com.farmerbb.taskbar.util.DashboardHelper;
 import com.farmerbb.taskbar.widget.DashboardCell;
@@ -164,7 +165,7 @@ public class DashboardController implements Controller {
         SharedPreferences pref = U.getSharedPreferences(context);
         if(pref.getBoolean("dashboard", false)) {
             if(pref.getBoolean("taskbar_active", false) || LauncherHelper.getInstance().isOnHomeScreen()) {
-                if(U.canDrawOverlays(context))
+                if(U.canDrawOverlays(context, host instanceof HomeActivityDelegate))
                     drawDashboard(host);
                 else {
                     pref.edit().putBoolean("taskbar_active", false).apply();
@@ -422,7 +423,7 @@ public class DashboardController implements Controller {
             } catch (IllegalArgumentException e) { /* Gracefully fail */ }
 
             SharedPreferences pref = U.getSharedPreferences(context);
-            if(U.canDrawOverlays(context))
+            if(U.canDrawOverlays(context, host instanceof HomeActivityDelegate))
                 drawDashboard(host);
             else {
                 pref.edit().putBoolean("taskbar_active", false).apply();
index 590dbc0..9ead067 100644 (file)
@@ -57,6 +57,8 @@ import android.widget.ListAdapter;
 import android.widget.TextView;
 
 import com.farmerbb.taskbar.R;
+import com.farmerbb.taskbar.activity.HomeActivity;
+import com.farmerbb.taskbar.activity.HomeActivityDelegate;
 import com.farmerbb.taskbar.activity.InvisibleActivity;
 import com.farmerbb.taskbar.activity.InvisibleActivityAlt;
 import com.farmerbb.taskbar.adapter.StartMenuAdapter;
@@ -169,7 +171,7 @@ public class StartMenuController implements Controller {
 
         SharedPreferences pref = U.getSharedPreferences(context);
         if(pref.getBoolean("taskbar_active", false) || LauncherHelper.getInstance().isOnHomeScreen()) {
-            if(U.canDrawOverlays(context))
+            if(U.canDrawOverlays(context, host instanceof HomeActivityDelegate))
                 drawStartMenu(host);
             else {
                 pref.edit().putBoolean("taskbar_active", false).apply();
@@ -714,7 +716,7 @@ public class StartMenuController implements Controller {
                 host.removeView(layout);
             } catch (IllegalArgumentException e) { /* Gracefully fail */ }
 
-            if(U.canDrawOverlays(context))
+            if(U.canDrawOverlays(context, host instanceof HomeActivityDelegate))
                 drawStartMenu(host);
             else {
                 SharedPreferences pref = U.getSharedPreferences(context);
index 8f1de34..e149b14 100644 (file)
@@ -70,6 +70,7 @@ import android.widget.LinearLayout;
 import android.widget.Space;
 
 import com.farmerbb.taskbar.BuildConfig;
+import com.farmerbb.taskbar.activity.HomeActivityDelegate;
 import com.farmerbb.taskbar.activity.MainActivity;
 import com.farmerbb.taskbar.R;
 import com.farmerbb.taskbar.activity.HomeActivity;
@@ -184,7 +185,7 @@ public class TaskbarController implements Controller {
     public void onCreateHost(Host host) {
         SharedPreferences pref = U.getSharedPreferences(context);
         if(pref.getBoolean("taskbar_active", false) || LauncherHelper.getInstance().isOnHomeScreen()) {
-            if(U.canDrawOverlays(context))
+            if(U.canDrawOverlays(context, host instanceof HomeActivityDelegate))
                 drawTaskbar(host);
             else {
                 pref.edit().putBoolean("taskbar_active", false).apply();
@@ -1149,7 +1150,7 @@ public class TaskbarController implements Controller {
 
             currentTaskbarPosition = 0;
 
-            if(U.canDrawOverlays(context))
+            if(U.canDrawOverlays(context, host instanceof HomeActivityDelegate))
                 drawTaskbar(host);
             else {
                 SharedPreferences pref = U.getSharedPreferences(context);
index 88cf8f0..0cfe986 100644 (file)
@@ -335,7 +335,7 @@ public class U {
         if(checkMultiWindow)
             freeformHackIntent.putExtra("check_multiwindow", true);
 
-        if(canDrawOverlays(context))
+        if(canDrawOverlays(context, false))
             startActivityLowerRight(context, freeformHackIntent);
     }
 
@@ -960,10 +960,6 @@ 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 && !canBootToFreeform(context))
index 631d12f..0c983cb 100644 (file)
@@ -32,7 +32,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)) {
+        else if(U.canDrawOverlays(context, true)) {
             SharedPreferences.Editor editor = pref.edit();
             editor.putBoolean("launcher", true);
             editor.apply();