/******************************************************************************* * Copyright 2011 Alexandros Schillings * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. ******************************************************************************/ package aws.apps.wifiKeyRecovery.util; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.text.Format; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.List; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.ResolveInfo; import android.net.ConnectivityManager; import android.net.Uri; import android.util.Log; import android.util.TypedValue; import android.view.Gravity; import android.widget.Toast; import aws.apps.wifiKeyRecovery.R; import aws.apps.wifiKeyRecovery.ui.MyAlertBox; public class UsefulBits { final String TAG = this.getClass().getName(); private Context mContext; public UsefulBits(Context cntx) { Log.d(TAG, "^ Object created"); mContext = cntx; } public static boolean validateIPv4Address(String address) { try { java.net.Inet4Address.getByName(address); return true; } catch(Exception e) { return false; } } public static boolean validateIPv6Address(String address) { try { java.net.Inet6Address.getByName(address); return true; } catch(Exception e) { return false; } } public Calendar convertMillisToDate(long millis){ Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(millis); return calendar; } public String formatDateTime(String formatString, Date d){ Format formatter = new SimpleDateFormat(formatString); return formatter.format(d); } public String getAppVersion(){ PackageInfo pi; try { pi = mContext.getPackageManager().getPackageInfo(mContext.getPackageName(), 0); return pi.versionName; } catch (NameNotFoundException e) { return ""; } } public boolean isActivityAvailable(String packageName, String className) { final PackageManager packageManager = mContext.getPackageManager(); final Intent intent = new Intent(); intent.setClassName(packageName, className); List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); if (list.size() > 0) { Log.d(TAG, "^ Activity exists:" + className); } return list.size() > 0; } public boolean isIntentAvailable(Context context, String action) { final PackageManager packageManager = context.getPackageManager(); final Intent intent = new Intent(action); List<ResolveInfo> resolveInfo = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); if (resolveInfo.size() > 0) { return true; } return false; } public boolean isOnline() { try{ ConnectivityManager cm = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE); if (cm != null) { return cm.getActiveNetworkInfo().isConnected(); } else { return false; } }catch(Exception e){ return false; } } public void saveToFile(String fileName, File directory, String contents){ Log.d(TAG, "^ Saving file."); if (android.os.Environment.getExternalStorageState().equals( android.os.Environment.MEDIA_MOUNTED)){ try { if (directory.canWrite()){ File gpxfile = new File(directory, fileName); FileWriter gpxwriter = new FileWriter(gpxfile); BufferedWriter out = new BufferedWriter(gpxwriter); out.write(contents); out.close(); Log.d(TAG, "^ Saved to SD as '" + directory.getAbsolutePath() + "/" + fileName + "'"); showToast("Saved to SD as '" + directory.getAbsolutePath() + "/" + fileName + "'", Toast.LENGTH_SHORT, Gravity.TOP,0,0); } } catch (Exception e) { showToast("Could not write file:\n+ e.getMessage()", Toast.LENGTH_SHORT, Gravity.TOP,0,0); Log.e(TAG, "^ Could not write file " + e.getMessage()); } }else{ showToast("No SD card is mounted...", Toast.LENGTH_SHORT, Gravity.TOP,0,0); Log.e(TAG, "^ No SD card is mounted."); } } public void showAboutDialogue(){ String title = mContext.getString(R.string.app_name) + " v"+ getAppVersion(); StringBuffer sb = new StringBuffer(); sb.append(mContext.getString(R.string.app_changelog)); sb.append("\n\n"); sb.append(mContext.getString(R.string.app_notes)); sb.append("\n\n"); sb.append(mContext.getString(R.string.app_acknowledgements)); sb.append("\n\n"); sb.append(mContext.getString(R.string.app_copyright)); MyAlertBox.create(mContext, sb.toString(), title, mContext.getString(android.R.string.ok)).show(); } public void ShowAlert(String title, String text, String button){ if (button.equals("")){button = mContext.getString(android.R.string.ok);} try{ AlertDialog.Builder ad = new AlertDialog.Builder(mContext); ad.setTitle( title ); ad.setMessage(text); ad.setPositiveButton( button, null ); ad.show(); }catch (Exception e){ Log.e(TAG, "^ ShowAlert()", e); } } public void showApplicationMissingAlert(String title, String message, String button1Text, final String marketUri){ if (button1Text.equals("")){button1Text = mContext.getString(android.R.string.ok);} try{ // Create the dialog box AlertDialog.Builder alertbox = new AlertDialog.Builder(mContext); alertbox.setTitle(title); alertbox.setMessage(message); alertbox.setPositiveButton(button1Text, null); alertbox.setNegativeButton("Market", new DialogInterface.OnClickListener() { public void onClick(DialogInterface arg0, int arg1) { try { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse(marketUri)); mContext.startActivity(intent); } catch (Exception e){ Log.e(TAG, "^ Error opening Market Page : " + e.getMessage()); ShowAlert(mContext.getString(R.string.text_error), mContext.getString(R.string.text_could_not_go_to_market), mContext.getString(android.R.string.ok)); } } }); alertbox.show(); }catch (Exception e){ Log.e(TAG, "^ ShowAlertWithWirelessSettings()", e); } } public void showToast(String message, int duration, int location, int x_offset, int y_offset){ Toast toast = Toast.makeText(mContext.getApplicationContext(), message, duration); toast.setGravity(location,x_offset,y_offset); toast.show(); } public String listToString(List<?> list) { StringBuffer sb = new StringBuffer(); int cnt = 0; for(Object obj:list){ cnt +=1; sb.append("#" + cnt +":\n"); sb.append(obj + "\n"); } return sb.toString(); } public int dipToPixels(int dip) { int value = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, (float) dip, mContext.getResources().getDisplayMetrics()); return value; } public float dipToPixels(float dip) { float value = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dip, mContext.getResources().getDisplayMetrics()); return value; } }