package com.cnblogs.android.utility; import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; import java.util.regex.Matcher; import java.util.regex.Pattern; import com.cnblogs.android.R; import com.cnblogs.android.SettingActivity; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.PixelFormat; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.util.Log; public class AppUtil { /** * Stringת��Ϊʱ�� * @param str * @return */ public static Date ParseDate(String str){ SimpleDateFormat dateFormat =new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); Date addTime = null; try { addTime = dateFormat.parse(str); } catch (ParseException e) { e.printStackTrace(); } return addTime; } /** * ������ת��Ϊ�ַ��� * @param date * @return */ public static String ParseDateToString(Date date){ return ParseDateToString(date,"yyyy-MM-dd HH:mm:ss"); } /** * ������ת��Ϊ�ַ��������أ� * @param date * @param format:ʱ���ʽ���������yyyy-MM-dd hh:mm:ss * @return */ public static String ParseDateToString(Date date,String format){ SimpleDateFormat dateFormat =new SimpleDateFormat(format); return dateFormat.format(date); } /** * ��UMTʱ��ת��Ϊ����ʱ�� * @param str * @return * @throws ParseException */ public static Date ParseUTCDate(String str){ //��ʽ��2012-03-04T23:42:00+08:00 SimpleDateFormat formatter=new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ",Locale.CHINA); try { Date date = formatter.parse(str); return date; } catch (ParseException e) { //��ʽ��Sat, 17 Mar 2012 11:37:13 +0000 //Sat, 17 Mar 2012 22:13:41 +0800 try{ SimpleDateFormat formatter2=new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z",Locale.CHINA); Date date2 = formatter2.parse(str); return date2; }catch(ParseException ex){ return null; } } } /** * ��ȡ����ͼƬȡDrawable * @param url * @return */ public static Drawable GetUrlDrawable(String url){ try{ URL aryURI=new URL(url); URLConnection conn=aryURI.openConnection(); InputStream is=conn.getInputStream(); Bitmap bmp=BitmapFactory.decodeStream(is); return new BitmapDrawable(bmp); }catch(Exception e){ Log.e("ERROR", "urlImage2Drawable���������쳣��imageUrl��" + url, e); return null; } } /** * �������ַ����Bitmap * @param imageUrl * @return */ public static Bitmap GetBitmap(String imageUrl){ Bitmap mBitmap = null; try { URL url = new URL(imageUrl); URLConnection conn=url.openConnection(); InputStream is = conn.getInputStream(); mBitmap = BitmapFactory.decodeStream(is); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return mBitmap; } /** * Drawableת��ΪBitmap * @param drawable * @return */ public static Bitmap DrawableToBitmap(Drawable drawable) { try { Bitmap bitmap = Bitmap .createBitmap( drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565); Canvas canvas = new Canvas(bitmap); // canvas.setBitmap(bitmap); drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable .getIntrinsicHeight()); drawable.draw(canvas); return bitmap; } catch (OutOfMemoryError e) { e.printStackTrace(); return null; } } /** * �˳����� * @param context */ public static void QuitHintDialog(final Context context){ new AlertDialog.Builder(context) .setMessage(R.string.sys_ask_quit_app) .setTitle(R.string.com_dialog_title_quit) .setIcon(R.drawable.icon) .setPositiveButton(R.string.com_btn_ok,new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { try{ ((Activity)context).finish(); }catch(Exception e){ Log.e("close","+++++++++++++����+++++++++"); } } }) .setNegativeButton(R.string.com_btn_cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }).show(); } /** * �������汾�� */ public static int GetVersionCode(final Context con) { int version = 1; PackageManager packageManager = con.getPackageManager(); try { PackageInfo packageInfo = packageManager.getPackageInfo(con.getPackageName(), 0); version = packageInfo.versionCode; } catch (Exception e) { e.printStackTrace(); } return version; } /** * ���������� * @param context * @return */ public static String GetVersionName(final Context context){ String versionName = "1.0.0"; PackageManager packageManager = context.getPackageManager(); try { PackageInfo packageInfo = packageManager.getPackageInfo(context.getPackageName(), 0); versionName = packageInfo.versionName; } catch (Exception e) { e.printStackTrace(); } return versionName; } /** * ����html�����ַ� * @param str * @return */ public static String HtmlToText(String str){ str=str.replace("<br />", "\n"); str=str.replace("<br/>", "\n"); str=str.replace("  ", "\t"); str=str.replace(" ", " "); str=str.replace("'","\\"); str=str.replace(""", "\\"); str=str.replace(">",">"); str=str.replace("<","<"); str=str.replace("&", "&"); return str; } /** * ��ʱ��ת��Ϊ���� * @param datetime * @return */ public static String DateToChineseString(Date datetime){ Date today=new Date(); long seconds = (today.getTime()- datetime.getTime())/1000; long year= seconds/(24*60*60*30*12);// ������� long month = seconds/(24*60*60*30);//������� long date = seconds/(24*60*60); //�������� long hour = (seconds-date*24*60*60)/(60*60);//����Сʱ�� long minute = (seconds-date*24*60*60-hour*60*60)/(60);//���ķ����� long second = (seconds-date*24*60*60-hour*60*60-minute*60);//�������� if(year>0){ return year + "��ǰ"; } if(month>0){ return month + "��ǰ"; } if(date>0){ return date + "��ǰ"; } if(hour>0){ return hour + "Сʱǰ"; } if(minute>0){ return minute + "����ǰ"; } if(second>0){ return second + "��ǰ"; } return "δ֪ʱ��"; } /** * �ж��Ƿ�cnblogs�ڲ����ӣ�����0������� * ��ʽ��http://www.cnblogs.com/walkingp/archive/2011/05/27/2059420.html * @param url * @return */ public static int GetCnblogsBlogLinkId(String url){ Pattern pattern=Pattern.compile("http://www.cnblogs.com/(.+?)/archive/(\\d+?)/(\\d+?)/(\\d+?)/(\\d+?).html"); Matcher m=pattern.matcher(url); int id=0; while(m.find()){ id=Integer.parseInt(m.group(5)); } return id; } /** * ��ʽ�����ݣ����ڲ������ݼ��������ݣ� */ public static String FormatContent(Context context, String html){ //�Ƿ�ͼƬģʽ boolean isImgMode=SettingActivity.IsPicReadMode(context); if(!isImgMode){ html=AppUtil.ReplaceImgTag(html); html=AppUtil.ReplaceVideoTag(html); } return html; } static final Pattern patternHtml=Pattern.compile("<.+?>"); /** * �Ƴ�html��� * @param html * @return */ public static String RemoveHtmlTag(String html){ Matcher m=patternHtml.matcher(html); while(m.find()){ html= m.replaceAll(""); } return html; } /** * �ж��Ƿ���ͼƬ���� * @param html * @return */ static final Pattern patternImg=Pattern.compile("<img(.+?)src=\"(.+?)\"(.+?)(onload=\"(.+?)\")?([^\"]+?)>"); public static boolean IsContainImg(String html){ Matcher m=patternImg.matcher(html); while(m.find()){ return true; } return false; } /** * �Ƴ�ͼƬ��� * @param html * @return */ public static String RemoveImgTag(String html){ Matcher m=patternImg.matcher(html); while(m.find()){ html= m.replaceAll(""); } return html; } /** * �滻ͼƬ��� * @param html * @return */ static final Pattern patternImgSrc=Pattern.compile("<img(.+?)src=\"(.+?)\"(.+?)>"); public static String ReplaceImgTag(String html){ Matcher m=patternImgSrc.matcher(html); while(m.find()){ html= m.replaceAll("��<a href=\"$2\">����鿴ͼƬ</a>��"); } return html; } /** * �Ƴ���Ƶ��� */ static final Pattern patternVideo=Pattern.compile("<object(.+?)>(.*?)<param name=\"src\" value=\"(.+?)\"(.+?)>(.+?)</object>"); public static String RemoveVideoTag(String html){ Matcher m=patternVideo.matcher(html); while(m.find()){ html= m.replaceAll(""); } return html; } /** * �滻��Ƶ��� */ static final Pattern patternVideoSrc=Pattern.compile("<object(.+?)>(.*?)<param name=\"src\" value=\"(.+?)\"(.+?)>(.+?)</object>"); public static String ReplaceVideoTag(String html){ Matcher m=patternVideoSrc.matcher(html); while(m.find()){ html= m.replaceAll("��<a href=\"$3\">����鿴��Ƶ</a>��"); } return html; } }