Fix notification content intent not being updated when needed
This commit is contained in:
parent
9cf0bc6c82
commit
bc8954fbba
|
@ -120,8 +120,6 @@ public final class NotificationUtil {
|
|||
.setSmallIcon(R.drawable.ic_newpipe_triangle_white)
|
||||
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
|
||||
.setColor(ContextCompat.getColor(player.context, R.color.gray))
|
||||
.setContentIntent(PendingIntent.getActivity(player.context, NOTIFICATION_ID,
|
||||
getIntentForNotification(player), FLAG_UPDATE_CURRENT))
|
||||
.setDeleteIntent(PendingIntent.getBroadcast(player.context, NOTIFICATION_ID,
|
||||
new Intent(ACTION_CLOSE), FLAG_UPDATE_CURRENT));
|
||||
|
||||
|
@ -141,6 +139,9 @@ public final class NotificationUtil {
|
|||
return;
|
||||
}
|
||||
|
||||
// also update content intent, in case the user switched players
|
||||
notificationBuilder.setContentIntent(PendingIntent.getActivity(player.context,
|
||||
NOTIFICATION_ID, getIntentForNotification(player), FLAG_UPDATE_CURRENT));
|
||||
notificationBuilder.setContentTitle(player.getVideoTitle());
|
||||
notificationBuilder.setContentText(player.getUploaderName());
|
||||
updateActions(notificationBuilder, player);
|
||||
|
@ -326,19 +327,18 @@ public final class NotificationUtil {
|
|||
}
|
||||
|
||||
private Intent getIntentForNotification(final VideoPlayerImpl player) {
|
||||
final Intent intent;
|
||||
if (player.audioPlayerSelected() || player.popupPlayerSelected()) {
|
||||
// Means we play in popup or audio only. Let's show BackgroundPlayerActivity
|
||||
intent = NavigationHelper.getBackgroundPlayerActivityIntent(player.context);
|
||||
// Means we play in popup or audio only. Let's show the play queue
|
||||
return NavigationHelper.getPlayQueueActivityIntent(player.context);
|
||||
} else {
|
||||
// We are playing in fragment. Don't open another activity just show fragment. That's it
|
||||
intent = NavigationHelper.getPlayerIntent(
|
||||
final Intent intent = NavigationHelper.getPlayerIntent(
|
||||
player.context, MainActivity.class, null, true);
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
intent.setAction(Intent.ACTION_MAIN);
|
||||
intent.addCategory(Intent.CATEGORY_LAUNCHER);
|
||||
return intent;
|
||||
}
|
||||
return intent;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -57,7 +57,7 @@ import org.schabi.newpipe.settings.SettingsActivity;
|
|||
|
||||
import java.util.ArrayList;
|
||||
|
||||
@SuppressWarnings({"unused", "WeakerAccess"})
|
||||
@SuppressWarnings({"unused"})
|
||||
public final class NavigationHelper {
|
||||
public static final String MAIN_FRAGMENT_TAG = "main_fragment_tag";
|
||||
public static final String SEARCH_FRAGMENT_TAG = "search_fragment_tag";
|
||||
|
@ -69,16 +69,18 @@ public final class NavigationHelper {
|
|||
//////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
@NonNull
|
||||
public static Intent getPlayerIntent(@NonNull final Context context,
|
||||
@NonNull final Class targetClazz,
|
||||
@NonNull final PlayQueue playQueue,
|
||||
@Nullable final String quality,
|
||||
final boolean resumePlayback) {
|
||||
public static <T> Intent getPlayerIntent(@NonNull final Context context,
|
||||
@NonNull final Class<T> targetClazz,
|
||||
@Nullable final PlayQueue playQueue,
|
||||
@Nullable final String quality,
|
||||
final boolean resumePlayback) {
|
||||
final Intent intent = new Intent(context, targetClazz);
|
||||
|
||||
final String cacheKey = SerializedCache.getInstance().put(playQueue, PlayQueue.class);
|
||||
if (cacheKey != null) {
|
||||
intent.putExtra(VideoPlayer.PLAY_QUEUE_KEY, cacheKey);
|
||||
if (playQueue != null) {
|
||||
final String cacheKey = SerializedCache.getInstance().put(playQueue, PlayQueue.class);
|
||||
if (cacheKey != null) {
|
||||
intent.putExtra(VideoPlayer.PLAY_QUEUE_KEY, cacheKey);
|
||||
}
|
||||
}
|
||||
if (quality != null) {
|
||||
intent.putExtra(VideoPlayer.PLAYBACK_QUALITY, quality);
|
||||
|
@ -90,53 +92,51 @@ public final class NavigationHelper {
|
|||
}
|
||||
|
||||
@NonNull
|
||||
public static Intent getPlayerIntent(@NonNull final Context context,
|
||||
@NonNull final Class targetClazz,
|
||||
@NonNull final PlayQueue playQueue,
|
||||
final boolean resumePlayback) {
|
||||
public static <T> Intent getPlayerIntent(@NonNull final Context context,
|
||||
@NonNull final Class<T> targetClazz,
|
||||
@Nullable final PlayQueue playQueue,
|
||||
final boolean resumePlayback) {
|
||||
return getPlayerIntent(context, targetClazz, playQueue, null, resumePlayback);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public static Intent getPlayerEnqueueIntent(@NonNull final Context context,
|
||||
@NonNull final Class targetClazz,
|
||||
@NonNull final PlayQueue playQueue,
|
||||
final boolean selectOnAppend,
|
||||
final boolean resumePlayback) {
|
||||
public static <T> Intent getPlayerEnqueueIntent(@NonNull final Context context,
|
||||
@NonNull final Class<T> targetClazz,
|
||||
@Nullable final PlayQueue playQueue,
|
||||
final boolean selectOnAppend,
|
||||
final boolean resumePlayback) {
|
||||
return getPlayerIntent(context, targetClazz, playQueue, resumePlayback)
|
||||
.putExtra(BasePlayer.APPEND_ONLY, true)
|
||||
.putExtra(BasePlayer.SELECT_ON_APPEND, selectOnAppend);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public static Intent getPlayerIntent(@NonNull final Context context,
|
||||
@NonNull final Class targetClazz,
|
||||
@NonNull final PlayQueue playQueue,
|
||||
final int repeatMode,
|
||||
final float playbackSpeed,
|
||||
final float playbackPitch,
|
||||
final boolean playbackSkipSilence,
|
||||
@Nullable final String playbackQuality,
|
||||
final boolean resumePlayback,
|
||||
final boolean startPaused,
|
||||
final boolean isMuted) {
|
||||
public static <T> Intent getPlayerIntent(@NonNull final Context context,
|
||||
@NonNull final Class<T> targetClazz,
|
||||
@Nullable final PlayQueue playQueue,
|
||||
final int repeatMode,
|
||||
final float playbackSpeed,
|
||||
final float playbackPitch,
|
||||
final boolean playbackSkipSilence,
|
||||
@Nullable final String playbackQuality,
|
||||
final boolean resumePlayback,
|
||||
final boolean startPaused,
|
||||
final boolean isMuted) {
|
||||
return getPlayerIntent(context, targetClazz, playQueue, playbackQuality, resumePlayback)
|
||||
.putExtra(BasePlayer.REPEAT_MODE, repeatMode)
|
||||
.putExtra(BasePlayer.START_PAUSED, startPaused)
|
||||
.putExtra(BasePlayer.IS_MUTED, isMuted);
|
||||
}
|
||||
|
||||
public static void playOnMainPlayer(
|
||||
final AppCompatActivity activity,
|
||||
final PlayQueue queue,
|
||||
final boolean autoPlay) {
|
||||
public static void playOnMainPlayer(final AppCompatActivity activity,
|
||||
final PlayQueue queue,
|
||||
final boolean autoPlay) {
|
||||
playOnMainPlayer(activity.getSupportFragmentManager(), queue, autoPlay);
|
||||
}
|
||||
|
||||
public static void playOnMainPlayer(
|
||||
final FragmentManager fragmentManager,
|
||||
final PlayQueue queue,
|
||||
final boolean autoPlay) {
|
||||
public static void playOnMainPlayer(final FragmentManager fragmentManager,
|
||||
final PlayQueue queue,
|
||||
final boolean autoPlay) {
|
||||
final PlayQueueItem currentStream = queue.getItem();
|
||||
openVideoDetailFragment(
|
||||
fragmentManager,
|
||||
|
@ -148,7 +148,7 @@ public final class NavigationHelper {
|
|||
}
|
||||
|
||||
public static void playOnMainPlayer(@NonNull final Context context,
|
||||
@NonNull final PlayQueue queue,
|
||||
@Nullable final PlayQueue queue,
|
||||
@NonNull final StreamingService.LinkType linkType,
|
||||
@NonNull final String url,
|
||||
@NonNull final String title,
|
||||
|
@ -553,18 +553,14 @@ public final class NavigationHelper {
|
|||
return true;
|
||||
}
|
||||
|
||||
public static Intent getBackgroundPlayerActivityIntent(final Context context) {
|
||||
return getServicePlayerActivityIntent(context, BackgroundPlayerActivity.class);
|
||||
}
|
||||
|
||||
private static Intent getServicePlayerActivityIntent(final Context context,
|
||||
final Class activityClass) {
|
||||
final Intent intent = new Intent(context, activityClass);
|
||||
public static Intent getPlayQueueActivityIntent(final Context context) {
|
||||
final Intent intent = new Intent(context, BackgroundPlayerActivity.class);
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
|
||||
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
}
|
||||
return intent;
|
||||
}
|
||||
|
||||
/*//////////////////////////////////////////////////////////////////////////
|
||||
// Link handling
|
||||
//////////////////////////////////////////////////////////////////////////*/
|
||||
|
|
Loading…
Reference in New Issue