com.secupwn.aimsicd.utils.MiscUtils.java Source code

Java tutorial

Introduction

Here is the source code for com.secupwn.aimsicd.utils.MiscUtils.java

Source

/* 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");
        }
    }
}