package com.todoroo.andlib.utility; import java.io.BufferedInputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; import android.app.Activity; import android.content.ContentValues; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.NetworkInfo.State; import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.service.ExceptionService; /** * Android Utility Classes * * @author Tim Su * */ public class AndroidUtilities { private static class ExceptionHelper { @Autowired public ExceptionService exceptionService; public ExceptionHelper() { DependencyInjectionService.getInstance().inject(this); } } /** * @return true if we're connected to the internet */ public static boolean isConnected(Context context) { ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo info = manager.getActiveNetworkInfo(); if (info == null) return false; if (info.getState() != State.CONNECTED) return false; return true; } /** Fetch the image specified by the given url */ public static Bitmap fetchImage(URL url) throws IOException { InputStream is = null; try { URLConnection conn = url.openConnection(); conn.connect(); is = conn.getInputStream(); BufferedInputStream bis = new BufferedInputStream(is, 16384); try { Bitmap bitmap = BitmapFactory.decodeStream(bis); return bitmap; } finally { bis.close(); } } finally { if(is != null) is.close(); } } /** * Start the given intent, handling security exceptions if they arise * * @param context * @param intent */ public static void startExternalIntent(Context context, Intent intent) { try { context.startActivity(intent); } catch (SecurityException e) { ExceptionHelper helper = new ExceptionHelper(); helper.exceptionService.displayAndReportError(context, "start-external-intent-" + intent.toString(), //$NON-NLS-1$ e); } } /** * Start the given intent, handling security exceptions if they arise * * @param activity * @param intent * @param requestCode */ public static void startExternalIntentForResult( Activity activity, Intent intent, int requestCode) { try { activity.startActivityForResult(intent, requestCode); } catch (SecurityException e) { ExceptionHelper helper = new ExceptionHelper(); helper.exceptionService.displayAndReportError(activity, "start-external-intent-" + intent.toString(), //$NON-NLS-1$ e); } } /** * Put an arbitrary object into a {@link ContentValues} * @param target * @param key * @param value */ public static void putInto(ContentValues target, String key, Object value) { if(value instanceof String) target.put(key, (String) value); else if(value instanceof Long) target.put(key, (Long) value); else if(value instanceof Integer) target.put(key, (Integer) value); else if(value instanceof Double) target.put(key, (Double) value); else throw new UnsupportedOperationException("Could not handle type " + //$NON-NLS-1$ value.getClass()); } }