Android 일반적인 도구 클래스 패키지

30915 단어 android
1, MD5 도구 종류:
public class MD5Util {

    public final static String MD5(String s) {

        char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',

                'a', 'b', 'c', 'd', 'e', 'f' };

        try {

            byte[] btInput = s.getBytes();

            //   MD5      MessageDigest   

            MessageDigest mdInst = MessageDigest.getInstance("MD5");

            //            

            mdInst.update(btInput);

            //     

            byte[] md = mdInst.digest();

            //                 

            int j = md.length;

            char str[] = new char[j * 2];

            int k = 0;

            for (int i = 0; i < j; i++) {

                byte byte0 = md[i];

                str[k++] = hexDigits[byte0 >>> 4 & 0xf];

                str[k++] = hexDigits[byte0 & 0xf];

            }

            return new String(str);

        } catch (Exception e) {

            return null;

        }

    }



    public static void main(String[] args) {

        System.out.print(MD5Util.MD5("password"));

    }

}

 
2, 스 레 드 수면
public class CSleep {

    public static final long DEFAULT_SLEEP_TIME = 500;



    private boolean          isRuning           = false;



    public boolean isRuning() {

        return isRuning;

    }



    public void runWithTime(final long defaultSleepTime) {

        isRuning = true;

        new Thread() {



            @Override

            public void run() {

                try {

                    sleep(defaultSleepTime, 0);

                } catch (InterruptedException e) {

                    e.printStackTrace();

                }

                isRuning = false;

                super.run();

            }

        }.start();

    }

}

 
3, 네트워크 연결 여부 확인
 /**

     *         

     * 

     * @return boolean

     * @since V1.0

     */

    public boolean isNetworkAvailable(Context context) {

        //           

        ConnectivityManager connMan = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

        //                 

        if (connMan != null) {

            //   getActiveNetworkInfo      ,            ,     

            NetworkInfo info = connMan.getActiveNetworkInfo();

            if (info != null) {

                return info.isAvailable();

            }

        }

        return false;

    }

 
4, 이상 류 포착
/**

 * UncaughtException   ,     Uncaught     ,        ,         .    Application   ,                。

 */

public class CrashHandler implements UncaughtExceptionHandler {

    /** TAG */

    public static final String              TAG       = "CrashHandler";

    /**      UncaughtException    */

    private Thread.UncaughtExceptionHandler mDefaultHandler;

    /** CrashHandler   */

    private static CrashHandler             mCrashHandler;

    /**    Context   */

    private Context                         mContext;

    /**               */

    private Map<String, String>             infos     = new HashMap<String, String>();

    /**        ,            */

    private DateFormat                      formatter = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");



    /**

     *       

     */

    private CrashHandler() {



    }



    /**

     *   CrashHandler   ,    

     * 

     * @return

     * @since V1.0

     */

    public static CrashHandler getInstance() {

        if (mCrashHandler == null)

            mCrashHandler = new CrashHandler();

        return mCrashHandler;

    }



    /**

     *    

     * 

     * @param context

     * @since V1.0

     */

    public void init(Context context) {

        mContext = context;

        //        UncaughtException   

        mDefaultHandler = Thread.getDefaultUncaughtExceptionHandler();

        //    CrashHandler         

        Thread.setDefaultUncaughtExceptionHandler(this);

    }



    /**

     *  UncaughtException            

     */

    @Override

    public void uncaughtException(Thread thread, Throwable ex) {

        if (!handleException(ex) && mDefaultHandler != null) {

            //                        

            mDefaultHandler.uncaughtException(thread, ex);

        } else {

            try {

                Thread.sleep(3000);

            } catch (InterruptedException e) {

                CLog.e(TAG, "uncaughtException() InterruptedException:" + e);

            }

            //     

            android.os.Process.killProcess(android.os.Process.myPid());

            System.exit(1);

        }

    }



    /**

     *        ,                     .

     * 

     * @param ex

     * @return true:          ;    false.

     * @since V1.0

     */

    private boolean handleException(Throwable ex) {

        if (ex == null) {

            return false;

        }



        //         

        collectDeviceInfo(mContext);



        //   Toast       

        new Thread() {

            @Override

            public void run() {

                Looper.prepare();

                Toast.makeText(mContext, "   ,      ,    .", Toast.LENGTH_SHORT).show();

                Looper.loop();

            }

        }.start();



        //       

        saveCatchInfo2File(ex);

        return true;

    }



    /**

     *         

     * 

     * @param ctx

     * @since V1.0

     */

    public void collectDeviceInfo(Context ctx) {

        try {

            PackageManager pm = ctx.getPackageManager();

            PackageInfo pi = pm.getPackageInfo(ctx.getPackageName(), PackageManager.GET_ACTIVITIES);

            if (pi != null) {

                String versionName = pi.versionName == null ? "null" : pi.versionName;

                String versionCode = pi.versionCode + "";

                infos.put("versionName", versionName);

                infos.put("versionCode", versionCode);

            }

        } catch (NameNotFoundException e) {

            CLog.e(TAG, "collectDeviceInfo() an error occured when collect package info NameNotFoundException:", e);

        }

        Field[] fields = Build.class.getDeclaredFields();

        for (Field field : fields) {

            try {

                field.setAccessible(true);

                infos.put(field.getName(), field.get(null).toString());

                CLog.d(TAG, field.getName() + " : " + field.get(null));

            } catch (Exception e) {

                CLog.e(TAG, "collectDeviceInfo() an error occured when collect crash info Exception:", e);

            }

        }

    }



    /**

     *           

     * 

     * @param ex

     * @return       ,           

     */

    private String saveCatchInfo2File(Throwable ex) {

        StringBuffer sb = new StringBuffer();

        for (Map.Entry<String, String> entry : infos.entrySet()) {

            String key = entry.getKey();

            String value = entry.getValue();

            sb.append(key + "=" + value + "
"); } Writer writer = new StringWriter(); PrintWriter printWriter = new PrintWriter(writer); ex.printStackTrace(printWriter); Throwable cause = ex.getCause(); while (cause != null) { cause.printStackTrace(printWriter); cause = cause.getCause(); } printWriter.close(); String result = writer.toString(); sb.append(result); try { long timestamp = System.currentTimeMillis(); String time = formatter.format(new Date()); String fileName = "crash-" + time + "-" + timestamp + ".log"; if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { String path = FilePathUtil.getiVMSDirPath() + "/crash/"; File dir = new File(path); if (!dir.exists()) { dir.mkdirs(); } FileOutputStream fos = new FileOutputStream(path + fileName); fos.write(sb.toString().getBytes()); // sendCrashLog2PM(path + fileName); fos.close(); } return fileName; } catch (Exception e) { CLog.e(TAG, "saveCatchInfo2File() an error occured while writing file... Exception:", e); } return null; } /** * log sdcard LogCat , 。 * * @param fileName * @since V1.0 */ private void sendCrashLog2PM(String fileName) { if (!new File(fileName).exists()) { CLog.e(TAG, "sendCrashLog2PM() "); return; } FileInputStream fis = null; BufferedReader reader = null; String s = null; try { fis = new FileInputStream(fileName); reader = new BufferedReader(new InputStreamReader(fis, "GBK")); while (true) { s = reader.readLine(); if (s == null) break; // , log 。 CLog.e(TAG, s); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { // try { reader.close(); fis.close(); } catch (IOException e) { e.printStackTrace(); } } } }

 
5, 팝 업 상자 알림
 public static Dialog showDialog(Context ctx, int layViewID, int ThemeType) {

        Dialog res = new Dialog(ctx, ThemeType);

        res.setContentView(layViewID);

        return res;

    }

 
 
6, 이미지 API 클래스
public class ImageAPI {



    public static Bitmap getImageByFilePath(String filePath, int scale) {

        Bitmap res = null;

        BitmapFactory.Options options = new BitmapFactory.Options();

        options.inJustDecodeBounds = true;

        BitmapFactory.decodeFile(filePath, options);

        options.inJustDecodeBounds = false;

        options.inSampleSize = scale;

        options.inPreferredConfig = Bitmap.Config.ARGB_4444;

        return res;

    }



    public static Bitmap getImageByFilePath(String filePath, int Towidth, int ToHeight) {

        Bitmap res = null;

        BitmapFactory.Options options = new BitmapFactory.Options();

        options.inJustDecodeBounds = true;

        if (!new File(filePath).exists())

            return res;

        BitmapFactory.decodeFile(filePath, options);



        int origionalWidth = options.outHeight;

        int origionalHeight = options.outWidth;

        options.inJustDecodeBounds = false;

        int scale = Math.max(origionalWidth / Towidth, origionalHeight / ToHeight);

        options.inSampleSize = scale;

        options.inPreferredConfig = Bitmap.Config.ARGB_4444;

        try {

            res = BitmapFactory.decodeFile(filePath, options);

        } catch (Exception e) {

            e.printStackTrace();

            return null;

        } catch (OutOfMemoryError e) {

            e.printStackTrace();

            return null;

        }

        return res;

    }



}

 
 
10, 알림 패키지 클래스
public static void showToast(Context ctx, int id, String str) {

        if (str == null) {

            return;

        }



        Toast toast = Toast.makeText(ctx, ctx.getString(id) + str, Toast.LENGTH_SHORT);

        toast.setGravity(Gravity.CENTER, 0, 0);

        toast.show();

    }



    public static void showToast(Context ctx, String errInfo) {

        if (errInfo == null) {

            return;

        }



        Toast toast = Toast.makeText(ctx, errInfo, Toast.LENGTH_SHORT);

        toast.setGravity(Gravity.CENTER, 0, 0);

        toast.show();

    }

좋은 웹페이지 즐겨찾기