Fix toast crash on API 33
You shouldn't call getView() on toasts. Also simplified some duplicate code.
This commit is contained in:
parent
48ae830262
commit
b6e6d39985
|
@ -631,8 +631,7 @@ public class RouterActivity extends AppCompatActivity {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (selectedChoiceKey.equals(getString(R.string.popup_player_key))
|
if (selectedChoiceKey.equals(getString(R.string.popup_player_key))
|
||||||
&& !PermissionHelper.isPopupEnabled(this)) {
|
&& !PermissionHelper.isPopupEnabledElseAsk(this)) {
|
||||||
PermissionHelper.showPopupEnablementToast(this);
|
|
||||||
finish();
|
finish();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1066,8 +1066,7 @@ public final class VideoDetailFragment
|
||||||
}
|
}
|
||||||
|
|
||||||
private void openPopupPlayer(final boolean append) {
|
private void openPopupPlayer(final boolean append) {
|
||||||
if (!PermissionHelper.isPopupEnabled(activity)) {
|
if (!PermissionHelper.isPopupEnabledElseAsk(activity)) {
|
||||||
PermissionHelper.showPopupEnablementToast(activity);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -143,11 +143,9 @@ public final class PlayQueueActivity extends AppCompatActivity
|
||||||
NavigationHelper.playOnMainPlayer(this, player.getPlayQueue(), true);
|
NavigationHelper.playOnMainPlayer(this, player.getPlayQueue(), true);
|
||||||
return true;
|
return true;
|
||||||
case R.id.action_switch_popup:
|
case R.id.action_switch_popup:
|
||||||
if (PermissionHelper.isPopupEnabled(this)) {
|
if (PermissionHelper.isPopupEnabledElseAsk(this)) {
|
||||||
this.player.setRecovery();
|
this.player.setRecovery();
|
||||||
NavigationHelper.playOnPopupPlayer(this, player.getPlayQueue(), true);
|
NavigationHelper.playOnPopupPlayer(this, player.getPlayQueue(), true);
|
||||||
} else {
|
|
||||||
PermissionHelper.showPopupEnablementToast(this);
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
case R.id.action_switch_background:
|
case R.id.action_switch_background:
|
||||||
|
|
|
@ -156,8 +156,7 @@ public final class NavigationHelper {
|
||||||
public static void playOnPopupPlayer(final Context context,
|
public static void playOnPopupPlayer(final Context context,
|
||||||
final PlayQueue queue,
|
final PlayQueue queue,
|
||||||
final boolean resumePlayback) {
|
final boolean resumePlayback) {
|
||||||
if (!PermissionHelper.isPopupEnabled(context)) {
|
if (!PermissionHelper.isPopupEnabledElseAsk(context)) {
|
||||||
PermissionHelper.showPopupEnablementToast(context);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -183,8 +182,7 @@ public final class NavigationHelper {
|
||||||
public static void enqueueOnPlayer(final Context context,
|
public static void enqueueOnPlayer(final Context context,
|
||||||
final PlayQueue queue,
|
final PlayQueue queue,
|
||||||
final PlayerType playerType) {
|
final PlayerType playerType) {
|
||||||
if ((playerType == PlayerType.POPUP) && !PermissionHelper.isPopupEnabled(context)) {
|
if (playerType == PlayerType.POPUP && !PermissionHelper.isPopupEnabledElseAsk(context)) {
|
||||||
PermissionHelper.showPopupEnablementToast(context);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,8 +9,6 @@ import android.content.pm.PackageManager;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.view.Gravity;
|
|
||||||
import android.widget.TextView;
|
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import androidx.annotation.RequiresApi;
|
import androidx.annotation.RequiresApi;
|
||||||
|
@ -128,18 +126,21 @@ public final class PermissionHelper {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isPopupEnabled(final Context context) {
|
/**
|
||||||
return Build.VERSION.SDK_INT < Build.VERSION_CODES.M
|
* Determines whether the popup is enabled, and if it is not, starts the system activity to
|
||||||
|| checkSystemAlertWindowPermission(context);
|
* 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
toast.show();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue