/* Android IMSI-Catcher Detector | (c) AIMSICD Privacy Project * ----------------------------------------------------------- * LICENSE: http://git.io/vki47 | TERMS: http://git.io/vki4o * ----------------------------------------------------------- */ package com.secupwn.aimsicd.utils; import android.app.Notification; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.support.annotation.DrawableRes; import android.support.v4.app.NotificationCompat; import android.support.v4.app.NotificationManagerCompat; import com.secupwn.aimsicd.R; import com.secupwn.aimsicd.ui.activities.MainActivity; import java.util.Calendar; import java.util.Date; import java.util.regex.Matcher; import java.util.regex.Pattern; public class MiscUtils { /* Call This function from any activity to set notification: Example: MiscUtils.showNotification(getApplicationContext(), getResources().getString(R.string.app_name_short), getResources().getString(R.string.app_name_short)+" - "+getResources().getString(R.string.status_good) , R.drawable.sense_ok,false); */ public static void showNotification(Context context, String tickertext, String contentText, @DrawableRes int drawable_id, boolean auto_cancel) { int NOTIFICATION_ID = 1; Intent notificationIntent = new Intent(context, MainActivity.class); notificationIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_FROM_BACKGROUND); PendingIntent contentIntent = PendingIntent.getActivity( context, NOTIFICATION_ID, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT); Bitmap largeIcon = BitmapFactory.decodeResource(context.getResources(), drawable_id); Notification notification = new NotificationCompat.Builder(context) .setSmallIcon(drawable_id) .setLargeIcon(largeIcon) .setTicker(tickertext) .setContentTitle(context.getResources().getString(R.string.main_app_name)) .setContentText(contentText) .setOngoing(true) .setAutoCancel(auto_cancel) .setContentIntent(contentIntent) .build(); NotificationManagerCompat.from(context).notify(NOTIFICATION_ID, notification); } public static final Pattern LOGCAT_TIMESTAMP_PATTERN = Pattern.compile("^(\\d{2})-(\\d{2}) (\\d{2}):(\\d{2}):(\\d{2}).(\\d{3})"); public static Date parseLogcatTimeStamp(String line) { Matcher matcher = LOGCAT_TIMESTAMP_PATTERN.matcher(line); if (matcher.find()) { int month = Integer.valueOf(matcher.group(1)); int day = Integer.valueOf(matcher.group(2)); int hour = Integer.valueOf(matcher.group(3)); int minute = Integer.valueOf(matcher.group(4)); int second = Integer.valueOf(matcher.group(5)); int ms = Integer.valueOf(matcher.group(6)); Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.MONTH, month - 1); calendar.set(Calendar.DAY_OF_MONTH, day); calendar.set(Calendar.HOUR_OF_DAY, hour); calendar.set(Calendar.MINUTE, minute); calendar.set(Calendar.SECOND, second); calendar.set(Calendar.MILLISECOND, ms); return calendar.getTime(); } else { throw new IllegalArgumentException("Invalid Line"); } } }