Something went wrong on our end
-
Peter Joseph De Jonckheere CESM2014 authoredPeter Joseph De Jonckheere CESM2014 authored
Notification.java 2.69 KiB
package com.notificationFramework.notification;
import android.annotation.TargetApi;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.app.TaskStackBuilder;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Build;
import android.support.v4.app.NotificationCompat;
import com.notificationFramework.sedentary.frontEnd.NotificationClicked;
import com.notificationFramework.sedentary.frontEnd.R;
import com.notificationFramework.sedentary.frontEnd.SaveFile;
/**
* Created by pharmacy on 09/01/2018.
*/
public abstract class Notification extends Service {
protected NotificationManager nm;
protected int snId = 0;
protected SharedPreferences preferences;
@Override
public int onStartCommand(Intent intent, int flags, int startId){
nm = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
preferences = this.getSharedPreferences(getString(R.string.preference_file_key), Context.MODE_PRIVATE);
buildNotification();
return START_STICKY;
}
protected void buildNotification(){
NotificationCompat.Builder mBuilder;
if(Build.VERSION.SDK_INT >= 26){
NotificationChannel nc = createNotificationChannel();
mBuilder = new NotificationCompat.Builder(this, nc.getId());
} else {
mBuilder = new NotificationCompat.Builder(this, "sednc");
}
mBuilder = setParameters(mBuilder);
Intent resultIntent = new Intent(this, NotificationClicked.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addParentStack(NotificationClicked.class);
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent =
stackBuilder.getPendingIntent(
0,
PendingIntent.FLAG_UPDATE_CURRENT
);
mBuilder.setContentIntent(resultPendingIntent);
nm.notify(snId, mBuilder.build());
SaveFile.recordNotification(1,0,0,this);
SaveFile.recordNotificationType(this);
stopSelf();
}
@TargetApi(26)
private NotificationChannel createNotificationChannel(){
NotificationChannel nc = new NotificationChannel("sednc", "sedentaryNotification", NotificationManager.IMPORTANCE_DEFAULT);
nc = setChannelParameters(nc);
return nc;
}
protected abstract NotificationCompat.Builder setParameters(NotificationCompat.Builder builder);
protected abstract NotificationChannel setChannelParameters(NotificationChannel nc);
}