Browse Source

fixed possible nullpointer exceptions

Fabio Arnold 10 years ago
parent
commit
d13c535b37

+ 6 - 1
src/de/tudarmstadt/informatik/hostage/ui2/fragment/AboutFragment.java

@@ -1,5 +1,6 @@
 package de.tudarmstadt.informatik.hostage.ui2.fragment;
 
+import android.app.Activity;
 import android.app.Fragment;
 import android.os.Bundle;
 import android.view.LayoutInflater;
@@ -10,12 +11,16 @@ import de.tudarmstadt.informatik.hostage.R;
 
 /**
  * Created by Fabio Arnold on 25.02.14.
+ * displays credits for the app
  */
 public class AboutFragment extends Fragment {
 	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
 		super.onCreateView(inflater, container, savedInstanceState);
 
-		getActivity().setTitle(getResources().getString(R.string.drawer_app_info));
+		final Activity activity = getActivity();
+		if (activity != null) {
+			activity.setTitle(getResources().getString(R.string.drawer_app_info));
+		}
 
 		return inflater.inflate(R.layout.fragment_about, container, false);
 	}

+ 28 - 12
src/de/tudarmstadt/informatik/hostage/ui2/fragment/ConnectionInfoDialogFragment.java

@@ -1,5 +1,6 @@
 package de.tudarmstadt.informatik.hostage.ui2.fragment;
 
+import android.app.Activity;
 import android.app.AlertDialog;
 import android.app.Dialog;
 import android.app.DialogFragment;
@@ -20,15 +21,25 @@ import de.tudarmstadt.informatik.hostage.ui2.activity.MainActivity;
 
 /**
  * Created by Fabio Arnold on 03.03.14.
+ * displays details about the current connection
  */
 public class ConnectionInfoDialogFragment extends DialogFragment {
 	public Dialog onCreateDialog(Bundle savedInstance) {
-		// get connection infos
-		SharedPreferences sharedPreferences = getActivity().getSharedPreferences(getString(R.string.connection_info), Context.MODE_PRIVATE);
-		final String ssid = sharedPreferences.getString(getString(R.string.connection_info_ssid), "");
-		String bssid = sharedPreferences.getString(getString(R.string.connection_info_bssid), "");
-		String internalIP = sharedPreferences.getString(getString(R.string.connection_info_internal_ip), "");
-		String externalIP = sharedPreferences.getString(getString(R.string.connection_info_external_ip), "");
+		// the data we want to display
+		String ssid = "undefined";
+		String bssid = "undefined";
+		String internalIP = "undefined";
+		String externalIP = "undefined";
+
+		// get infos about the current connection using SharedPreferences
+		final Activity activity = getActivity();
+		if (activity != null) {
+			SharedPreferences sharedPreferences = activity.getSharedPreferences(getString(R.string.connection_info), Context.MODE_PRIVATE);
+			ssid = sharedPreferences.getString(getString(R.string.connection_info_ssid), "");
+			bssid = sharedPreferences.getString(getString(R.string.connection_info_bssid), "");
+			internalIP = sharedPreferences.getString(getString(R.string.connection_info_internal_ip), "");
+			externalIP = sharedPreferences.getString(getString(R.string.connection_info_external_ip), "");
+		}
 
 		// inflate the layout with a dark theme
 		Context context = new ContextThemeWrapper(getActivity(), android.R.style.Theme_Holo);
@@ -36,12 +47,17 @@ public class ConnectionInfoDialogFragment extends DialogFragment {
 		View view = localInflater.inflate(R.layout.fragment_connectioninfo_dialog, null);
 
 		// assign values in layout
-		((TextView)view.findViewById(R.id.connectioninfo_ssid_value)).setText(ssid);
-		((TextView)view.findViewById(R.id.connectioninfo_bssid_value)).setText(bssid);
-		((TextView)view.findViewById(R.id.connectioninfo_internalip_value)).setText(internalIP);
-		((TextView)view.findViewById(R.id.connectioninfo_externalip_value)).setText(externalIP);
+		if (view != null) {
+			((TextView)view.findViewById(R.id.connectioninfo_ssid_value)).setText(ssid);
+			((TextView)view.findViewById(R.id.connectioninfo_bssid_value)).setText(bssid);
+			((TextView)view.findViewById(R.id.connectioninfo_internalip_value)).setText(internalIP);
+			((TextView)view.findViewById(R.id.connectioninfo_externalip_value)).setText(externalIP);
+		}
+
+		// capture the SSID for the button action
+		final String filterSSID = ssid;
 
-		// build the dialog
+		// build the actual dialog
 		AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), AlertDialog.THEME_HOLO_DARK);
 		builder.setView(view);
 		builder.setTitle(R.string.title_connection_info);
@@ -50,7 +66,7 @@ public class ConnectionInfoDialogFragment extends DialogFragment {
 			@Override
 			public void onClick(DialogInterface dialog, int which) {
 				ArrayList<String> ssids = new ArrayList<String>();
-				ssids.add(ssid);
+				ssids.add(filterSSID);
 
 				LogFilter filter = new LogFilter();
 				filter.setESSIDs(ssids);

+ 10 - 5
src/de/tudarmstadt/informatik/hostage/ui2/fragment/HomeFragment.java

@@ -1,4 +1,5 @@
 package de.tudarmstadt.informatik.hostage.ui2.fragment;
+import android.app.Activity;
 import android.app.AlertDialog;
 import android.app.Fragment;
 import android.app.FragmentManager;
@@ -10,7 +11,6 @@ import android.content.IntentFilter;
 import android.content.SharedPreferences;
 import android.os.Bundle;
 import android.support.v4.content.LocalBroadcastManager;
-import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -153,7 +153,6 @@ public class HomeFragment extends Fragment {
 
 		boolean hasActiveListeners = false;
 		int totalAttacks = dbh.numBssidSeen(mConnectionInfo.getString(getString(R.string.connection_info_bssid), null));
-		int totalLogged = 0;
 
 		if(MainActivity.getInstance().isServiceBound()){
 			for(String protocol: getResources().getStringArray(R.array.protocols)){
@@ -225,7 +224,10 @@ public class HomeFragment extends Fragment {
 
 	    super.onCreateView(inflater, container, savedInstanceState);
 
-	    getActivity().setTitle(getResources().getString(R.string.drawer_overview));
+		final Activity activity = getActivity();
+		if (activity != null) {
+			activity.setTitle(getResources().getString(R.string.drawer_overview));
+		}
 
 	    dbh = new UglyDbHelper(getActivity());
 
@@ -239,8 +241,11 @@ public class HomeFragment extends Fragment {
 		mHomeConnectionInfoButton.setOnClickListener(new View.OnClickListener() {
 			@Override
 			public void onClick(View v) {
-				ConnectionInfoDialogFragment connectionInfoDialogFragment = new ConnectionInfoDialogFragment();
-				connectionInfoDialogFragment.show(getFragmentManager().beginTransaction(), connectionInfoDialogFragment.getTag());
+				final FragmentManager fragmentManager = getFragmentManager();
+				if (fragmentManager != null) {
+					ConnectionInfoDialogFragment connectionInfoDialogFragment = new ConnectionInfoDialogFragment();
+					connectionInfoDialogFragment.show(fragmentManager.beginTransaction(), connectionInfoDialogFragment.getTag());
+				}
 			}
 		});
 

+ 18 - 7
src/de/tudarmstadt/informatik/hostage/ui2/fragment/ThreatMapFragment.java

@@ -1,6 +1,8 @@
 package de.tudarmstadt.informatik.hostage.ui2.fragment;
 
+import android.app.Activity;
 import android.app.Fragment;
+import android.app.FragmentManager;
 import android.graphics.Color;
 import android.location.Location;
 import android.os.Bundle;
@@ -251,9 +253,9 @@ public class ThreatMapFragment extends Fragment implements GoogleMap.OnInfoWindo
 	 * view must be removed if this object has been created once before
 	 * that is why view is static
 	 *
-	 * @param inflater
-	 * @param container
-	 * @param savedInstanceState
+	 * @param inflater the inflater
+	 * @param container the container
+	 * @param savedInstanceState the savedInstanceState
 	 * @return the view
 	 */
 	@Override
@@ -261,7 +263,10 @@ public class ThreatMapFragment extends Fragment implements GoogleMap.OnInfoWindo
 	                         Bundle savedInstanceState) {
 		super.onCreateView(inflater, container, savedInstanceState);
 
-		getActivity().setTitle(getResources().getString(R.string.drawer_threat_map));
+		final Activity activity = getActivity();
+		if (activity != null) {
+			activity.setTitle(getResources().getString(R.string.drawer_threat_map));
+		}
 
 		if (sView != null) {
 			ViewGroup parent = (ViewGroup) sView.getParent();
@@ -272,9 +277,15 @@ public class ThreatMapFragment extends Fragment implements GoogleMap.OnInfoWindo
 		try {
 			sView = inflater.inflate(R.layout.fragment_threatmap, container, false);
 			if (isGooglePlay()) {
-				sMap = ((MapFragment) getFragmentManager()
-						.findFragmentById(R.id.threatmapfragment)).getMap();
-				populateMap();
+				final FragmentManager fragmentManager = getFragmentManager();
+				if (fragmentManager != null) {
+					final MapFragment mapFragment = (MapFragment) getFragmentManager()
+							.findFragmentById(R.id.threatmapfragment);
+					if (mapFragment != null) {
+						sMap = mapFragment.getMap();
+						populateMap();
+					}
+				}
 			}
 		} catch (InflateException e) {
         	// map already exists

+ 0 - 1
src/de/tudarmstadt/informatik/hostage/ui2/helper/ColorSequenceGenerator.java

@@ -1,7 +1,6 @@
 package de.tudarmstadt.informatik.hostage.ui2.helper;
 
 import android.graphics.Color;
-import android.util.Log;
 
 /**
  * Idea from http://ridiculousfish.com/blog/posts/colors.html