/* Android IMSI-Catcher Detector | (c) AIMSICD Privacy Project * ----------------------------------------------------------- * LICENSE: http://git.io/vki47 | TERMS: http://git.io/vki4o * ----------------------------------------------------------- */ package com.secupwn.aimsicd.ui.activities; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.SharedPreferences; import android.support.v4.content.LocalBroadcastManager; import com.secupwn.aimsicd.AndroidIMSICatcherDetector; import com.secupwn.aimsicd.R; import com.secupwn.aimsicd.service.AimsicdService; import com.secupwn.aimsicd.utils.Icon; import io.freefair.android.injection.annotation.Inject; import io.freefair.android.injection.app.InjectionAppCompatActivity; import io.freefair.android.util.logging.Logger; /** * Base activity class, handles code that is shared between all activities * * @author Tor Henning Ueland */ public abstract class BaseActivity extends InjectionAppCompatActivity { @Inject protected Logger log; /** * Triggered when GUI is opened */ @Override protected void onResume() { super.onResume(); log.debug("StatusWatcher starting watching"); LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver, new IntentFilter("StatusChange")); updateIcon(this); } /** * Message reciever that handles icon update when status changes */ private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { log.debug("StatusWatcher received status change to " + ((AndroidIMSICatcherDetector) getApplication()).getStatus().name() + ", updating icon"); updateIcon(context); } }; private void updateIcon(Context context) { SharedPreferences prefs = context.getSharedPreferences(AimsicdService.SHARED_PREFERENCES_BASENAME, 0); final String iconType = prefs.getString(context.getString(R.string.pref_ui_icons_key), "SENSE").toUpperCase(); runOnUiThread(new Runnable() { @Override public void run() { if (getActionBar() != null) { getActionBar().setIcon(Icon.getIcon(Icon.Type.valueOf(iconType), ((AndroidIMSICatcherDetector) getApplication()).getStatus())); } } }); } /** * Triggered when GUI is closed/put to background */ @Override protected void onPause() { super.onPause(); log.debug("StatusWatcher stopped watching"); LocalBroadcastManager.getInstance(this).unregisterReceiver(mMessageReceiver); } }