mirror of https://github.com/TeamNewPipe/NewPipe
70 lines
2.8 KiB
Java
70 lines
2.8 KiB
Java
|
package org.schabi.newpipe.util;
|
||
|
|
||
|
import android.app.PendingIntent;
|
||
|
import android.content.Context;
|
||
|
import android.content.Intent;
|
||
|
import android.os.Build;
|
||
|
|
||
|
import androidx.annotation.NonNull;
|
||
|
|
||
|
public final class PendingIntentCompat {
|
||
|
private PendingIntentCompat() {
|
||
|
}
|
||
|
|
||
|
private static int addImmutableFlag(final int flags) {
|
||
|
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
|
||
|
? flags | PendingIntent.FLAG_IMMUTABLE : flags;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Creates a {@link PendingIntent} to start an activity. It is immutable on API level 23 and
|
||
|
* greater.
|
||
|
*
|
||
|
* @param context The context in which the activity should be started.
|
||
|
* @param requestCode The request code
|
||
|
* @param intent The Intent of the activity to be launched.
|
||
|
* @param flags The flags for the intent.
|
||
|
* @return The pending intent.
|
||
|
* @see PendingIntent#getActivity(Context, int, Intent, int)
|
||
|
*/
|
||
|
@NonNull
|
||
|
public static PendingIntent getActivity(@NonNull final Context context, final int requestCode,
|
||
|
@NonNull final Intent intent, final int flags) {
|
||
|
return PendingIntent.getActivity(context, requestCode, intent, addImmutableFlag(flags));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Creates a {@link PendingIntent} to start a service. It is immutable on API level 23 and
|
||
|
* greater.
|
||
|
*
|
||
|
* @param context The context in which the service should be started.
|
||
|
* @param requestCode The request code
|
||
|
* @param intent The Intent of the service to be launched.
|
||
|
* @param flags The flags for the intent.
|
||
|
* @return The pending intent.
|
||
|
* @see PendingIntent#getService(Context, int, Intent, int)
|
||
|
*/
|
||
|
@NonNull
|
||
|
public static PendingIntent getService(@NonNull final Context context, final int requestCode,
|
||
|
@NonNull final Intent intent, final int flags) {
|
||
|
return PendingIntent.getService(context, requestCode, intent, addImmutableFlag(flags));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Creates a {@link PendingIntent} to perform a broadcast. It is immutable on API level 23 and
|
||
|
* greater.
|
||
|
*
|
||
|
* @param context The context in which the broadcast should be performed.
|
||
|
* @param requestCode The request code
|
||
|
* @param intent The Intent to be broadcast.
|
||
|
* @param flags The flags for the intent.
|
||
|
* @return The pending intent.
|
||
|
* @see PendingIntent#getBroadcast(Context, int, Intent, int)
|
||
|
*/
|
||
|
@NonNull
|
||
|
public static PendingIntent getBroadcast(@NonNull final Context context, final int requestCode,
|
||
|
@NonNull final Intent intent, final int flags) {
|
||
|
return PendingIntent.getBroadcast(context, requestCode, intent, addImmutableFlag(flags));
|
||
|
}
|
||
|
}
|