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))
|
||||
&& !PermissionHelper.isPopupEnabled(this)) {
|
||||
PermissionHelper.showPopupEnablementToast(this);
|
||||
&& !PermissionHelper.isPopupEnabledElseAsk(this)) {
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -1066,8 +1066,7 @@ public final class VideoDetailFragment
|
|||
}
|
||||
|
||||
private void openPopupPlayer(final boolean append) {
|
||||
if (!PermissionHelper.isPopupEnabled(activity)) {
|
||||
PermissionHelper.showPopupEnablementToast(activity);
|
||||
if (!PermissionHelper.isPopupEnabledElseAsk(activity)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -143,11 +143,9 @@ public final class PlayQueueActivity extends AppCompatActivity
|
|||
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:
|
||||
|
|
|
@ -156,8 +156,7 @@ public final class NavigationHelper {
|
|||
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 final class NavigationHelper {
|
|||
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;
|
||||
}
|
||||
|
||||
|
|
|
@ -9,8 +9,6 @@ import android.content.pm.PackageManager;
|
|||
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 final class PermissionHelper {
|
|||
}
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue