package com.amaze.filemanager.ui.notifications; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Build; import com.amaze.filemanager.R; import com.amaze.filemanager.activities.MainActivity; import com.amaze.filemanager.services.ftpservice.FTPService; import java.net.InetAddress; /** * Created by yashwanthreddyg on 19-06-2016. */ public class FTPNotification extends BroadcastReceiver{ private static final int NOTIFICATION_ID = 2123; @Override public void onReceive(Context context, Intent intent) { switch(intent.getAction()){ case FTPService.ACTION_STARTED: createNotification(context); break; case FTPService.ACTION_STOPPED: removeNotification(context); break; } } @SuppressWarnings("NewApi") private void createNotification(Context context){ String notificationService = Context.NOTIFICATION_SERVICE; NotificationManager notificationManager = (NotificationManager) context.getSystemService(notificationService); InetAddress address = FTPService.getLocalInetAddress(context); String iptext = "ftp://" + address.getHostAddress() + ":" + FTPService.getPort() + "/"; int icon = R.drawable.ic_ftp_light; CharSequence tickerText = context.getResources().getString(R.string.ftp_notif_starting); long when = System.currentTimeMillis(); CharSequence contentTitle = context.getResources().getString(R.string.ftp_notif_title); CharSequence contentText = String.format(context.getResources().getString(R.string.ftp_notif_text), iptext); Intent notificationIntent = new Intent(context, MainActivity.class); notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0); int stopIcon = android.R.drawable.ic_menu_close_clear_cancel; CharSequence stopText = context.getResources().getString(R.string.ftp_notif_stop_server); Intent stopIntent = new Intent(FTPService.ACTION_STOP_FTPSERVER); PendingIntent stopPendingIntent = PendingIntent.getBroadcast(context, 0, stopIntent, PendingIntent.FLAG_ONE_SHOT); Notification.Builder notificationBuilder = new Notification.Builder(context) .setContentTitle(contentTitle) .setContentText(contentText) .setContentIntent(contentIntent) .setSmallIcon(icon) .setTicker(tickerText) .setWhen(when) .setOngoing(true); Notification notification = null; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { notificationBuilder.setVisibility(Notification.VISIBILITY_PUBLIC); notificationBuilder.setCategory(Notification.CATEGORY_SERVICE); notificationBuilder.setPriority(Notification.PRIORITY_MAX); } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { notificationBuilder.addAction(stopIcon, stopText, stopPendingIntent); notificationBuilder.setShowWhen(false); notification = notificationBuilder.build(); } else { notification = notificationBuilder.getNotification(); } // Pass Notification to NotificationManager notificationManager.notify(NOTIFICATION_ID, notification); } private void removeNotification(Context context){ String ns = Context.NOTIFICATION_SERVICE; NotificationManager nm = (NotificationManager) context.getSystemService(ns); nm.cancelAll(); } }