diff --git a/app/src/main/java/org/schabi/newpipe/RouterActivity.java b/app/src/main/java/org/schabi/newpipe/RouterActivity.java index 2567df9938a..e9c19a22de0 100644 --- a/app/src/main/java/org/schabi/newpipe/RouterActivity.java +++ b/app/src/main/java/org/schabi/newpipe/RouterActivity.java @@ -631,8 +631,7 @@ private void handleChoice(final String selectedChoiceKey) { } if (selectedChoiceKey.equals(getString(R.string.popup_player_key)) - && !PermissionHelper.isPopupEnabled(this)) { - PermissionHelper.showPopupEnablementToast(this); + && !PermissionHelper.isPopupEnabledElseAsk(this)) { finish(); return; } diff --git a/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java index 601135cbb59..6f4439ee9bc 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java @@ -1066,8 +1066,7 @@ private void openBackgroundPlayer(final boolean append) { } private void openPopupPlayer(final boolean append) { - if (!PermissionHelper.isPopupEnabled(activity)) { - PermissionHelper.showPopupEnablementToast(activity); + if (!PermissionHelper.isPopupEnabledElseAsk(activity)) { return; } diff --git a/app/src/main/java/org/schabi/newpipe/player/PlayQueueActivity.java b/app/src/main/java/org/schabi/newpipe/player/PlayQueueActivity.java index 94de7fef383..9ce99c15b4b 100644 --- a/app/src/main/java/org/schabi/newpipe/player/PlayQueueActivity.java +++ b/app/src/main/java/org/schabi/newpipe/player/PlayQueueActivity.java @@ -143,11 +143,9 @@ public boolean onOptionsItemSelected(final MenuItem item) { NavigationHelper.playOnMainPlayer(this, player.getPlayQueue(), true); return true; case R.id.action_switch_popup: - if (PermissionHelper.isPopupEnabled(this)) { + if (PermissionHelper.isPopupEnabledElseAsk(this)) { this.player.setRecovery(); NavigationHelper.playOnPopupPlayer(this, player.getPlayQueue(), true); - } else { - PermissionHelper.showPopupEnablementToast(this); } return true; case R.id.action_switch_background: diff --git a/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java b/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java index 483f5067ae1..b4556507cc5 100644 --- a/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java +++ b/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java @@ -156,8 +156,7 @@ public static void playOnMainPlayer(final Context context, public static void playOnPopupPlayer(final Context context, final PlayQueue queue, final boolean resumePlayback) { - if (!PermissionHelper.isPopupEnabled(context)) { - PermissionHelper.showPopupEnablementToast(context); + if (!PermissionHelper.isPopupEnabledElseAsk(context)) { return; } @@ -183,8 +182,7 @@ public static void playOnBackgroundPlayer(final Context context, public static void enqueueOnPlayer(final Context context, final PlayQueue queue, final PlayerType playerType) { - if ((playerType == PlayerType.POPUP) && !PermissionHelper.isPopupEnabled(context)) { - PermissionHelper.showPopupEnablementToast(context); + if (playerType == PlayerType.POPUP && !PermissionHelper.isPopupEnabledElseAsk(context)) { return; } diff --git a/app/src/main/java/org/schabi/newpipe/util/PermissionHelper.java b/app/src/main/java/org/schabi/newpipe/util/PermissionHelper.java index f47494770af..55193599e6f 100644 --- a/app/src/main/java/org/schabi/newpipe/util/PermissionHelper.java +++ b/app/src/main/java/org/schabi/newpipe/util/PermissionHelper.java @@ -9,8 +9,6 @@ import android.net.Uri; import android.os.Build; import android.provider.Settings; -import android.view.Gravity; -import android.widget.TextView; import android.widget.Toast; import androidx.annotation.RequiresApi; @@ -128,18 +126,21 @@ public static boolean checkSystemAlertWindowPermission(final Context context) { } } - public static boolean isPopupEnabled(final Context context) { - return Build.VERSION.SDK_INT < Build.VERSION_CODES.M - || checkSystemAlertWindowPermission(context); - } - - public static void showPopupEnablementToast(final Context context) { - final Toast toast = - Toast.makeText(context, R.string.msg_popup_permission, Toast.LENGTH_LONG); - final TextView messageView = toast.getView().findViewById(android.R.id.message); - if (messageView != null) { - messageView.setGravity(Gravity.CENTER); + /** + * Determines whether the popup is enabled, and if it is not, starts the system activity to + * request the permission with {@link #checkSystemAlertWindowPermission(Context)} and shows a + * toast to the user explaining why the permission is needed. + * + * @param context the Android context + * @return whether the popup is enabled + */ + public static boolean isPopupEnabledElseAsk(final Context context) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M + || checkSystemAlertWindowPermission(context)) { + return true; + } else { + Toast.makeText(context, R.string.msg_popup_permission, Toast.LENGTH_LONG).show(); + return false; } - toast.show(); } }