mirror of
https://github.com/TeamNewPipe/NewPipe
synced 2024-12-23 00:20:32 +00:00
Merge pull request #10021 from Isira-Seneviratne/PendingIntentCompat
Switch to AndroidX's PendingIntentCompat.
This commit is contained in:
commit
ba3afd1e35
@ -212,7 +212,7 @@ dependencies {
|
|||||||
implementation 'androidx.appcompat:appcompat:1.5.1'
|
implementation 'androidx.appcompat:appcompat:1.5.1'
|
||||||
implementation 'androidx.cardview:cardview:1.0.0'
|
implementation 'androidx.cardview:cardview:1.0.0'
|
||||||
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
|
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
|
||||||
implementation 'androidx.core:core-ktx:1.8.0'
|
implementation 'androidx.core:core-ktx:1.10.0'
|
||||||
implementation 'androidx.documentfile:documentfile:1.0.1'
|
implementation 'androidx.documentfile:documentfile:1.0.1'
|
||||||
implementation 'androidx.fragment:fragment-ktx:1.4.1'
|
implementation 'androidx.fragment:fragment-ktx:1.4.1'
|
||||||
implementation "androidx.lifecycle:lifecycle-livedata-ktx:${androidxLifecycleVersion}"
|
implementation "androidx.lifecycle:lifecycle-livedata-ktx:${androidxLifecycleVersion}"
|
||||||
|
@ -6,6 +6,7 @@ import android.util.Log
|
|||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.core.app.NotificationCompat
|
import androidx.core.app.NotificationCompat
|
||||||
import androidx.core.app.NotificationManagerCompat
|
import androidx.core.app.NotificationManagerCompat
|
||||||
|
import androidx.core.app.PendingIntentCompat
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.core.content.edit
|
import androidx.core.content.edit
|
||||||
import androidx.core.net.toUri
|
import androidx.core.net.toUri
|
||||||
@ -19,7 +20,6 @@ import com.grack.nanojson.JsonParser
|
|||||||
import com.grack.nanojson.JsonParserException
|
import com.grack.nanojson.JsonParserException
|
||||||
import org.schabi.newpipe.extractor.downloader.Response
|
import org.schabi.newpipe.extractor.downloader.Response
|
||||||
import org.schabi.newpipe.extractor.exceptions.ReCaptchaException
|
import org.schabi.newpipe.extractor.exceptions.ReCaptchaException
|
||||||
import org.schabi.newpipe.util.PendingIntentCompat
|
|
||||||
import org.schabi.newpipe.util.ReleaseVersionUtil.coerceUpdateCheckExpiry
|
import org.schabi.newpipe.util.ReleaseVersionUtil.coerceUpdateCheckExpiry
|
||||||
import org.schabi.newpipe.util.ReleaseVersionUtil.isLastUpdateCheckExpired
|
import org.schabi.newpipe.util.ReleaseVersionUtil.isLastUpdateCheckExpired
|
||||||
import org.schabi.newpipe.util.ReleaseVersionUtil.isReleaseApk
|
import org.schabi.newpipe.util.ReleaseVersionUtil.isReleaseApk
|
||||||
@ -60,7 +60,7 @@ class NewVersionWorker(
|
|||||||
val intent = Intent(Intent.ACTION_VIEW, apkLocationUrl?.toUri())
|
val intent = Intent(Intent.ACTION_VIEW, apkLocationUrl?.toUri())
|
||||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||||
val pendingIntent = PendingIntentCompat.getActivity(
|
val pendingIntent = PendingIntentCompat.getActivity(
|
||||||
applicationContext, 0, intent, 0
|
applicationContext, 0, intent, 0, false
|
||||||
)
|
)
|
||||||
val channelId = applicationContext.getString(R.string.app_update_notification_channel_id)
|
val channelId = applicationContext.getString(R.string.app_update_notification_channel_id)
|
||||||
val notificationBuilder = NotificationCompat.Builder(applicationContext, channelId)
|
val notificationBuilder = NotificationCompat.Builder(applicationContext, channelId)
|
||||||
|
@ -9,10 +9,10 @@ import android.view.View
|
|||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.core.app.NotificationCompat
|
import androidx.core.app.NotificationCompat
|
||||||
import androidx.core.app.NotificationManagerCompat
|
import androidx.core.app.NotificationManagerCompat
|
||||||
|
import androidx.core.app.PendingIntentCompat
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import com.google.android.material.snackbar.Snackbar
|
import com.google.android.material.snackbar.Snackbar
|
||||||
import org.schabi.newpipe.R
|
import org.schabi.newpipe.R
|
||||||
import org.schabi.newpipe.util.PendingIntentCompat
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class contains all of the methods that should be used to let the user know that an error has
|
* This class contains all of the methods that should be used to let the user know that an error has
|
||||||
@ -118,7 +118,8 @@ class ErrorUtil {
|
|||||||
context,
|
context,
|
||||||
0,
|
0,
|
||||||
getErrorActivityIntent(context, errorInfo),
|
getErrorActivityIntent(context, errorInfo),
|
||||||
PendingIntent.FLAG_UPDATE_CURRENT
|
PendingIntent.FLAG_UPDATE_CURRENT,
|
||||||
|
false
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -10,6 +10,7 @@ import android.os.Build
|
|||||||
import android.provider.Settings
|
import android.provider.Settings
|
||||||
import androidx.core.app.NotificationCompat
|
import androidx.core.app.NotificationCompat
|
||||||
import androidx.core.app.NotificationManagerCompat
|
import androidx.core.app.NotificationManagerCompat
|
||||||
|
import androidx.core.app.PendingIntentCompat
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.preference.PreferenceManager
|
import androidx.preference.PreferenceManager
|
||||||
import com.squareup.picasso.Picasso
|
import com.squareup.picasso.Picasso
|
||||||
@ -19,7 +20,6 @@ import org.schabi.newpipe.extractor.stream.StreamInfoItem
|
|||||||
import org.schabi.newpipe.local.feed.service.FeedUpdateInfo
|
import org.schabi.newpipe.local.feed.service.FeedUpdateInfo
|
||||||
import org.schabi.newpipe.util.Localization
|
import org.schabi.newpipe.util.Localization
|
||||||
import org.schabi.newpipe.util.NavigationHelper
|
import org.schabi.newpipe.util.NavigationHelper
|
||||||
import org.schabi.newpipe.util.PendingIntentCompat
|
|
||||||
import org.schabi.newpipe.util.PicassoHelper
|
import org.schabi.newpipe.util.PicassoHelper
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -76,7 +76,8 @@ class NotificationHelper(val context: Context) {
|
|||||||
NavigationHelper
|
NavigationHelper
|
||||||
.getChannelIntent(context, data.listInfo.serviceId, data.listInfo.url)
|
.getChannelIntent(context, data.listInfo.serviceId, data.listInfo.url)
|
||||||
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK),
|
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK),
|
||||||
0
|
0,
|
||||||
|
false
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -29,6 +29,7 @@ import android.os.IBinder
|
|||||||
import android.util.Log
|
import android.util.Log
|
||||||
import androidx.core.app.NotificationCompat
|
import androidx.core.app.NotificationCompat
|
||||||
import androidx.core.app.NotificationManagerCompat
|
import androidx.core.app.NotificationManagerCompat
|
||||||
|
import androidx.core.app.PendingIntentCompat
|
||||||
import androidx.core.app.ServiceCompat
|
import androidx.core.app.ServiceCompat
|
||||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
||||||
import io.reactivex.rxjava3.core.Flowable
|
import io.reactivex.rxjava3.core.Flowable
|
||||||
@ -42,7 +43,6 @@ import org.schabi.newpipe.extractor.ListInfo
|
|||||||
import org.schabi.newpipe.extractor.stream.StreamInfoItem
|
import org.schabi.newpipe.extractor.stream.StreamInfoItem
|
||||||
import org.schabi.newpipe.local.feed.service.FeedEventManager.Event.ErrorResultEvent
|
import org.schabi.newpipe.local.feed.service.FeedEventManager.Event.ErrorResultEvent
|
||||||
import org.schabi.newpipe.local.feed.service.FeedEventManager.postEvent
|
import org.schabi.newpipe.local.feed.service.FeedEventManager.postEvent
|
||||||
import org.schabi.newpipe.util.PendingIntentCompat
|
|
||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.TimeUnit
|
||||||
|
|
||||||
class FeedLoadService : Service() {
|
class FeedLoadService : Service() {
|
||||||
@ -152,8 +152,8 @@ class FeedLoadService : Service() {
|
|||||||
private lateinit var notificationBuilder: NotificationCompat.Builder
|
private lateinit var notificationBuilder: NotificationCompat.Builder
|
||||||
|
|
||||||
private fun createNotification(): NotificationCompat.Builder {
|
private fun createNotification(): NotificationCompat.Builder {
|
||||||
val cancelActionIntent =
|
val cancelActionIntent = PendingIntentCompat
|
||||||
PendingIntentCompat.getBroadcast(this, NOTIFICATION_ID, Intent(ACTION_CANCEL), 0)
|
.getBroadcast(this, NOTIFICATION_ID, Intent(ACTION_CANCEL), 0, false)
|
||||||
|
|
||||||
return NotificationCompat.Builder(this, getString(R.string.notification_channel_id))
|
return NotificationCompat.Builder(this, getString(R.string.notification_channel_id))
|
||||||
.setOngoing(true)
|
.setOngoing(true)
|
||||||
|
@ -13,6 +13,7 @@ import androidx.annotation.Nullable;
|
|||||||
import androidx.annotation.StringRes;
|
import androidx.annotation.StringRes;
|
||||||
import androidx.core.app.NotificationCompat;
|
import androidx.core.app.NotificationCompat;
|
||||||
import androidx.core.app.NotificationManagerCompat;
|
import androidx.core.app.NotificationManagerCompat;
|
||||||
|
import androidx.core.app.PendingIntentCompat;
|
||||||
import androidx.core.app.ServiceCompat;
|
import androidx.core.app.ServiceCompat;
|
||||||
import androidx.core.content.ContextCompat;
|
import androidx.core.content.ContextCompat;
|
||||||
|
|
||||||
@ -21,7 +22,6 @@ import org.schabi.newpipe.R;
|
|||||||
import org.schabi.newpipe.player.Player;
|
import org.schabi.newpipe.player.Player;
|
||||||
import org.schabi.newpipe.player.mediasession.MediaSessionPlayerUi;
|
import org.schabi.newpipe.player.mediasession.MediaSessionPlayerUi;
|
||||||
import org.schabi.newpipe.util.NavigationHelper;
|
import org.schabi.newpipe.util.NavigationHelper;
|
||||||
import org.schabi.newpipe.util.PendingIntentCompat;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@ -134,7 +134,7 @@ public final class NotificationUtil {
|
|||||||
.setColorized(player.getPrefs().getBoolean(
|
.setColorized(player.getPrefs().getBoolean(
|
||||||
player.getContext().getString(R.string.notification_colorize_key), true))
|
player.getContext().getString(R.string.notification_colorize_key), true))
|
||||||
.setDeleteIntent(PendingIntentCompat.getBroadcast(player.getContext(),
|
.setDeleteIntent(PendingIntentCompat.getBroadcast(player.getContext(),
|
||||||
NOTIFICATION_ID, new Intent(ACTION_CLOSE), FLAG_UPDATE_CURRENT));
|
NOTIFICATION_ID, new Intent(ACTION_CLOSE), FLAG_UPDATE_CURRENT, false));
|
||||||
|
|
||||||
// set the initial value for the video thumbnail, updatable with updateNotificationThumbnail
|
// set the initial value for the video thumbnail, updatable with updateNotificationThumbnail
|
||||||
setLargeIcon(builder);
|
setLargeIcon(builder);
|
||||||
@ -152,7 +152,7 @@ public final class NotificationUtil {
|
|||||||
|
|
||||||
// also update content intent, in case the user switched players
|
// also update content intent, in case the user switched players
|
||||||
notificationBuilder.setContentIntent(PendingIntentCompat.getActivity(player.getContext(),
|
notificationBuilder.setContentIntent(PendingIntentCompat.getActivity(player.getContext(),
|
||||||
NOTIFICATION_ID, getIntentForNotification(), FLAG_UPDATE_CURRENT));
|
NOTIFICATION_ID, getIntentForNotification(), FLAG_UPDATE_CURRENT, false));
|
||||||
notificationBuilder.setContentTitle(player.getVideoTitle());
|
notificationBuilder.setContentTitle(player.getVideoTitle());
|
||||||
notificationBuilder.setContentText(player.getUploaderName());
|
notificationBuilder.setContentText(player.getUploaderName());
|
||||||
notificationBuilder.setTicker(player.getVideoTitle());
|
notificationBuilder.setTicker(player.getVideoTitle());
|
||||||
@ -335,7 +335,7 @@ public final class NotificationUtil {
|
|||||||
final String intentAction) {
|
final String intentAction) {
|
||||||
return new NotificationCompat.Action(drawable, player.getContext().getString(title),
|
return new NotificationCompat.Action(drawable, player.getContext().getString(title),
|
||||||
PendingIntentCompat.getBroadcast(player.getContext(), NOTIFICATION_ID,
|
PendingIntentCompat.getBroadcast(player.getContext(), NOTIFICATION_ID,
|
||||||
new Intent(intentAction), FLAG_UPDATE_CURRENT));
|
new Intent(intentAction), FLAG_UPDATE_CURRENT, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
private Intent getIntentForNotification() {
|
private Intent getIntentForNotification() {
|
||||||
|
@ -1,69 +0,0 @@
|
|||||||
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));
|
|
||||||
}
|
|
||||||
}
|
|
@ -33,6 +33,7 @@ import androidx.annotation.StringRes;
|
|||||||
import androidx.collection.SparseArrayCompat;
|
import androidx.collection.SparseArrayCompat;
|
||||||
import androidx.core.app.NotificationCompat;
|
import androidx.core.app.NotificationCompat;
|
||||||
import androidx.core.app.NotificationCompat.Builder;
|
import androidx.core.app.NotificationCompat.Builder;
|
||||||
|
import androidx.core.app.PendingIntentCompat;
|
||||||
import androidx.core.app.ServiceCompat;
|
import androidx.core.app.ServiceCompat;
|
||||||
import androidx.core.content.ContextCompat;
|
import androidx.core.content.ContextCompat;
|
||||||
import androidx.preference.PreferenceManager;
|
import androidx.preference.PreferenceManager;
|
||||||
@ -43,7 +44,6 @@ import org.schabi.newpipe.player.helper.LockManager;
|
|||||||
import org.schabi.newpipe.streams.io.StoredDirectoryHelper;
|
import org.schabi.newpipe.streams.io.StoredDirectoryHelper;
|
||||||
import org.schabi.newpipe.streams.io.StoredFileHelper;
|
import org.schabi.newpipe.streams.io.StoredFileHelper;
|
||||||
import org.schabi.newpipe.util.Localization;
|
import org.schabi.newpipe.util.Localization;
|
||||||
import org.schabi.newpipe.util.PendingIntentCompat;
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -146,7 +146,7 @@ public class DownloadManagerService extends Service {
|
|||||||
|
|
||||||
mOpenDownloadList = PendingIntentCompat.getActivity(this, 0,
|
mOpenDownloadList = PendingIntentCompat.getActivity(this, 0,
|
||||||
openDownloadListIntent,
|
openDownloadListIntent,
|
||||||
PendingIntent.FLAG_UPDATE_CURRENT);
|
PendingIntent.FLAG_UPDATE_CURRENT, false);
|
||||||
|
|
||||||
icLauncher = BitmapFactory.decodeResource(this.getResources(), R.mipmap.ic_launcher);
|
icLauncher = BitmapFactory.decodeResource(this.getResources(), R.mipmap.ic_launcher);
|
||||||
|
|
||||||
@ -487,7 +487,7 @@ public class DownloadManagerService extends Service {
|
|||||||
private PendingIntent makePendingIntent(String action) {
|
private PendingIntent makePendingIntent(String action) {
|
||||||
Intent intent = new Intent(this, DownloadManagerService.class).setAction(action);
|
Intent intent = new Intent(this, DownloadManagerService.class).setAction(action);
|
||||||
return PendingIntentCompat.getService(this, intent.hashCode(), intent,
|
return PendingIntentCompat.getService(this, intent.hashCode(), intent,
|
||||||
PendingIntent.FLAG_UPDATE_CURRENT);
|
PendingIntent.FLAG_UPDATE_CURRENT, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void manageLock(boolean acquire) {
|
private void manageLock(boolean acquire) {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||||
|
|
||||||
buildscript {
|
buildscript {
|
||||||
ext.kotlin_version = '1.6.21'
|
ext.kotlin_version = '1.8.20'
|
||||||
repositories {
|
repositories {
|
||||||
google()
|
google()
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
|
Loading…
Reference in New Issue
Block a user