save notification: use channels

the target api requires channels, set them on the builder.
feature/sentry
Floens 6 years ago
parent c03ab33ab2
commit 591b1fa65f
  1. 1
      Clover/app/src/main/AndroidManifest.xml
  2. 30
      Clover/app/src/main/java/org/floens/chan/ui/service/SavingNotification.java

@ -24,6 +24,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.NFC" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission
android:name="android.permission.WAKE_LOCK"
tools:node="replace" />

@ -17,11 +17,14 @@
*/
package org.floens.chan.ui.service;
import android.annotation.TargetApi;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.os.IBinder;
import android.support.annotation.Nullable;
@ -34,6 +37,8 @@ import de.greenrobot.event.EventBus;
import static org.floens.chan.utils.AndroidUtils.getAppContext;
public class SavingNotification extends Service {
public static final String CHANNEL_ID_SAVING = "save:saving";
public static final String DONE_TASKS_KEY = "done_tasks";
public static final String TOTAL_TASKS_KEY = "total_tasks";
private static final String CANCEL_KEY = "cancel";
@ -75,6 +80,10 @@ public class SavingNotification extends Service {
doneTasks = extras.getInt(DONE_TASKS_KEY);
totalTasks = extras.getInt(TOTAL_TASKS_KEY);
if (isOreo()) {
ensureChannels();
}
if (!inForeground) {
startForeground(NOTIFICATION_ID, getNotification());
inForeground = true;
@ -87,8 +96,18 @@ public class SavingNotification extends Service {
return START_STICKY;
}
@TargetApi(Build.VERSION_CODES.O)
public void ensureChannels() {
NotificationChannel normalChannel = new NotificationChannel(
CHANNEL_ID_SAVING, "Save notificatons",
NotificationManager.IMPORTANCE_DEFAULT);
normalChannel.setDescription("Current save tasks");
notificationManager.createNotificationChannel(normalChannel);
}
private Notification getNotification() {
NotificationCompat.Builder builder = new NotificationCompat.Builder(getAppContext());
NotificationCompat.Builder builder = new NotificationCompat.Builder(
getAppContext(), CHANNEL_ID_SAVING);
builder.setSmallIcon(R.drawable.ic_stat_notify);
builder.setContentTitle(getString(R.string.image_save_notification_downloading));
builder.setContentText(getString(R.string.image_save_notification_cancel));
@ -97,12 +116,19 @@ public class SavingNotification extends Service {
Intent intent = new Intent(this, SavingNotification.class);
intent.putExtra(CANCEL_KEY, true);
PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
PendingIntent pendingIntent = PendingIntent.getService(
this, 0,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(pendingIntent);
return builder.build();
}
private boolean isOreo() {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.O;
}
public static class SavingCancelRequestMessage {
}
}

Loading…
Cancel
Save