Android 工具代码

1.获取应用下的所以Activity

public static ArrayList<String> getActivities(Context ctx) {
      ArrayList<String> result = new ArrayList<String>();
      Intent intent = new Intent(Intent.ACTION_MAIN, null);
      intent.setPackage(ctx.getPackageName());
      for (ResolveInfo info : ctx.getPackageManager().queryIntentActivities(intent, 0)) {
          result.add(info.activityInfo.name);
      }
      return result;
  }

2.检测字符串中是否包含汉字

public static boolean checkChinese(String sequence) {
        final String format = "[\\u4E00-\\u9FA5\\uF900-\\uFA2D]";
        boolean result = false;
        Pattern pattern = Pattern.compile(format);
        Matcher matcher = pattern.matcher(sequence);
        result = matcher.find();
        return result;
    }

3、检测字符串中只能包含:中文、数字、下划线(_)、横线(-)

 public static boolean checkNickname(String sequence) {
        final String format = "[^\\u4E00-\\u9FA5\\uF900-\\uFA2D\\w-_]";
        Pattern pattern = Pattern.compile(format);
        Matcher matcher = pattern.matcher(sequence);
        return !matcher.find();
    } 

4.检测有没有应用程序来接受你处理发出的Intent

 public static boolean isIntentAvailable(Context context, String action) {
        final PackageManager packageManager = context.getPackageManager();
        final Intent intent = new Intent(action);
        List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
        return list.size() > 0;
    }

5.判断手机号码是否有效

/**
	 * 判断手机号码是否有效
	 * @param phoneNumber
	 * @return
	 */
	public static boolean isMobileNumber(String phoneNumber) {
		final Pattern p = Pattern.compile("^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$");
		final Pattern p2 = Pattern.compile("^0(10|2[0-5789]|\\d{3})\\d{7,8}$");
		final Matcher m = p.matcher(phoneNumber);
		final Matcher m2 = p2.matcher(phoneNumber);
		return m.find() || m2.find();

	}

6.获取当前版本跟服务器版本的差

/**
	 * 获取当前版本跟服务器获取的版本的差
	 * 
	 * @param serviceVersion
	 * @return
	 */
	private void compareVersion(int serviceVersion) {
		int currentVersion = 0;
		try {
			currentVersion = ((LoginActivity.this).getPackageManager().getPackageInfo(LoginActivity.this.getPackageName(), 0)).versionCode;
		} catch (NameNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		if (serviceVersion > currentVersion) {
			showVersionDialog();
		}
	}

7.返回当前正在运行的服务

//返回所有正在运行的服务
		List<ActivityManager.RunningServiceInfo> serviceInfos = activityManager.getRunningServices(100);
		for (int i = 0; i < serviceInfos.size(); i++) {
			ActivityManager.RunningServiceInfo runningServiceInfo = serviceInfos.get(i);
			if ("com.nenglong.babyface.service.UpdateService".equals(runningServiceInfo.service.getClassName())) {
				isDowning = true;
				return;
			}
		}

8.根据图片尺寸加载图片

/**
     * 【Bunny】根据容器尺寸加载图片
     *
     * @param path 图片路径
     * @param width 容器宽度
     * @param height 容器高度
     * @param coverable 图片尺寸是否可以完全覆盖容器
     * @return 不小于容器尺寸的最大缩放比图片
     */
    public static Bitmap loadSuitableBitmap(String path, int width, int height, boolean coverable) {
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inJustDecodeBounds = true;
        BitmapFactory.decodeFile(path, options);
        int widthRatio = options.outWidth / width;
        int heightRatio = options.outHeight / height;
        options.inSampleSize = coverable ? Math.min(widthRatio, heightRatio) : Math.max(widthRatio, heightRatio);
        options.inJustDecodeBounds = false;
        options.inPurgeable = true;
        options.inInputShareable = true;
        return BitmapFactory.decodeFile(path, options);
    }


9.根据图片尺寸延时到布局时设置图片对象

 /**
     * 【Bunny】根据图片组件尺寸延时到布局时设置图片对象
     *
     * @param path 图片路径
     * @param imageView 图片组件
     * @param coverable 图片尺寸是否可以完全覆盖容器
     */
    public static void setSuitableBitmapOnGlobalLayout(final String path, final ImageView imageView, final boolean coverable) {
        new Handler(Looper.getMainLooper()).post(new Runnable() {
            public void run() {
                imageView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
                    public void onGlobalLayout() {
                        imageView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
                        imageView.setImageBitmap(loadSuitableBitmap(path, imageView.getWidth(), imageView.getHeight(), coverable));
                    }
                });
                imageView.requestLayout();
            }
        });
    }

10.显示设置网络对话框

/**
	 * 显示网络设置对话框
	 * @param context
	 */
	public static void showSetNetworkDialog(final Context context) {
		Dialog dialog = new AlertDialog.Builder(context)
				.setIcon(android.R.drawable.presence_busy)
				.setTitle("网络不可")
				.setMessage("是否现在设置网络?")
				.setPositiveButton("设置网络",
						new DialogInterface.OnClickListener() {

							@Override
							public void onClick(DialogInterface dialog,
									int which) {
								context.startActivity(new Intent(
										Settings.ACTION_WIRELESS_SETTINGS));
							}

						})
				.setNegativeButton("取消",
						new DialogInterface.OnClickListener() {
							public void onClick(DialogInterface dialog,
									int whichButton) {
								dialog.cancel();
							}
						}).create();
		dialog.show();
		
	}

11.查看网络是否可用

/**
	 * 网络是否可用
	 * 
	 * @param context
	 * @return
	 */
	public static boolean isNetworkAvailableAndshowSetNetworkDialog(Context context) {
		ConnectivityManager mgr = (ConnectivityManager) context
				.getSystemService(Context.CONNECTIVITY_SERVICE);
		NetworkInfo[] info = mgr.getAllNetworkInfo();
		if (info != null) {
			for (int i = 0; i < info.length; i++) {
				if (info[i].getState() == NetworkInfo.State.CONNECTED) {
					return true;
				}
			}
		}
		showSetNetworkDialog(context);
		return false;
	}

12.是否存在SD卡

/**
	 * 是否存在SD卡
	 * @return
	 */
	public static boolean isExistSDCard() {
		if (android.os.Environment.getExternalStorageState().equals(
				android.os.Environment.MEDIA_MOUNTED))
			return true;
		else 
			return false;
	}

13.Drawable转化成Bitmap

   /**
     * 把Drawable转化成Bitmap
     * @param drawable
     * @return Bitmap图片
     */
    public static Bitmap drawableToBitmap(Drawable drawable) {
        // 取 drawable 的长宽
        int w = drawable.getIntrinsicWidth();
        int h = drawable.getIntrinsicHeight();

        // 取 drawable 的颜色格式
        Bitmap.Config config = drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
                : Bitmap.Config.RGB_565;
        // 建立对应 bitmap
        Bitmap bitmap = Bitmap.createBitmap(w, h, config);
        // 建立对应 bitmap 的画布
        Canvas canvas = new Canvas(bitmap);
        drawable.setBounds(0, 0, w, h);
        // 把 drawable 内容画到画布中
        drawable.draw(canvas);
        return bitmap;
    }
14.打电话弹出框

/**
	 * 打电话弹出对话框
	 * 
	 * @param activity
	 *            对应的Activity
	 * @param phoneNum
	 *            对应的电话号码
	 * @param userName
	 *            对应的拨打用户的名字
	 */
	public static void CallPhoneDialog(final Activity activity, final String phoneNum,
			String userName) {

		AlertDialog.Builder builder = new Builder(activity);
		builder.setMessage(activity.getString(R.string.call_person) + userName + "\n"
				+ activity.getString(R.string.call_num) + phoneNum);
		builder.setIcon(R.drawable.menu_fold_ori).setTitle(activity.getString(R.string.prompt));

		builder.setPositiveButton(activity.getString(R.string.confirm),
				new DialogInterface.OnClickListener() {
					@Override
					public void onClick(DialogInterface dialog, int which) {
						Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phoneNum));
						activity.startActivity(intent);
					}
				});
		builder.setNegativeButton(activity.getString(R.string.cancle),
				new DialogInterface.OnClickListener() {
					@Override
					public void onClick(DialogInterface dialog, int which) {
						dialog.dismiss();
					}
				});
		builder.create().show();
	}
15.文字根据状态改变颜色

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="#53c1bd" android:state_selected="true"/>
    <item android:color="#53c1bd" android:state_focused="true"/>
    <item android:color="#53c1bd" android:state_pressed="true"/>
    <item android:color="#777777"/>
</selector>

16.根据状态改变背景色,直接给背景色会报错

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_selected="true"><shape>            <gradient android:angle="0" android:centerColor="#00a59f" android:endColor="#00a59f" android:startColor="#00a59f" />
        </shape></item>
    <item android:state_focused="true"><shape>
            <gradient android:angle="0" android:centerColor="#00a59f" android:endColor="#00a59f" android:startColor="#00a59f" />
        </shape></item>
    <item android:state_pressed="true"><shape>
            <gradient android:angle="0" android:centerColor="#00a59f" android:endColor="#00a59f" android:startColor="#00a59f" />
        </shape></item>
    <item><shape>
            <gradient android:angle="0" android:centerColor="#00ff00" android:endColor="00ff00" android:startColor="00ff00" />
        </shape></item>

</selector>


注:部分代码转载自  农民伯伯:http://www.cnblogs.com/over140/archive/2012/09/26/2611999.html

                            http://www.cnblogs.com/over140/archive/2013/03/05/2706068.html



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章