安卓分享、截图、获取屏幕分辨率、当前版本号、获取sd卡目录工具类

直接复制到项目即可使用的工具类。

import java.io.File;
import java.io.FileOutputStream;
import java.lang.reflect.Field;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.net.Uri;
import android.os.Environment;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.View;
import android.view.WindowManager;

import com.hq.hq100.R;

public class Util {
	/**
	 * 获取屏幕分辨率
	 * @param activity
	 * @return display display[0]=当前屏幕宽度  display[1]=当前屏幕高度
	 */
	public static int[] getCurrDisplay(Activity activity){
		int [] display={0,0};
		 //定义DisplayMetrics对象 
        DisplayMetrics dm = new DisplayMetrics(); 
        //获取窗口属性 
        activity.getWindowManager().getDefaultDisplay().getMetrics(dm); 
        //窗口宽度 
        int screenWidth = dm.widthPixels; 
        //窗口高度 
        int screenHeight = dm.heightPixels;
        display[0] = screenWidth;
    	display[1] = screenHeight;
        return display;
	}
	// 获取当前版本号
	public static String getVersionName(Context context) throws Exception {
		// 获取packagemanager的实例
		PackageManager packageManager = context.getPackageManager();
		// getPackageName()是你当前类的包名,0代表是获取版本信息
		PackageInfo packInfo = packageManager.getPackageInfo(
				context.getPackageName(), 0);
		return packInfo.versionName;
	}

	// 调用系统浏览器
	public static void goToUrl(String url, Context context) {
		Uri uri = Uri.parse(url);
		Intent intent = new Intent(Intent.ACTION_VIEW, uri);
		context.startActivity(intent);
	}

	/**
	 * 获取和保存当前屏幕的截图 返回 截图文件路径 filepath
	 */
	public static String GetandSaveCurrentImage(Activity currActivity,
			String fileName) {
		// 1.构建Bitmap
		WindowManager windowManager = currActivity.getWindowManager();
		Display display = windowManager.getDefaultDisplay();
		int w = display.getWidth();
		int h = display.getHeight();
		Bitmap Bmp = Bitmap.createBitmap(w, h, Config.ARGB_8888);
		// 2.获取屏幕
		View decorview = currActivity.getWindow().getDecorView();
		decorview.setDrawingCacheEnabled(true);
		Bmp = decorview.getDrawingCache();
		String SavePath = getSDCardPath() + "/myImage/ScreenImage/";
		// 截图文件路径
		String filepath = "";
		// 3.保存Bitmap
		try {
			File path = new File(SavePath);
			// 文件
			filepath = SavePath + fileName;
			File file = new File(filepath);
			if (!path.exists()) {
				path.mkdirs();
			}
			if (!file.exists()) {
				file.createNewFile();
			}
			FileOutputStream fos = null;
			fos = new FileOutputStream(file);
			if (null != fos) {
				Bmp.compress(Bitmap.CompressFormat.PNG, 90, fos);
				fos.flush();
				fos.close();
				// Toast.makeText(currActivity.getApplicationContext(),
				// "截屏文件已保存至SDCard/myImage/ScreenImage/下",
				// Toast.LENGTH_LONG).show();
			}

		} catch (Exception e) {
			e.printStackTrace();
		}
		return filepath;
	}

	/**
	 * 获取SDCard的目录路径功能
	 */
	public static String getSDCardPath() {
		File sdcardDir = null;
		// 判断SDCard是否存在
		boolean sdcardExist = Environment.getExternalStorageState().equals(
				android.os.Environment.MEDIA_MOUNTED);
		if (sdcardExist) {
			sdcardDir = Environment.getExternalStorageDirectory();
		}
		return sdcardDir.toString();
	}

	/**
	 * 分享功能
	 * 
	 * @param context
	 *            上下文
	 * @param activityTitle
	 *            Activity的名字 (分享框的标题)
	 * @param msgTitle
	 *            消息标题
	 * @param msgText
	 *            消息内容
	 * @param imgPath
	 *            图片路径,不分享图片则传null
	 */
	public static void shareMsg(Context context, String activityTitle,
			String msgTitle, String msgText, String imgPath) {
		Intent intent = new Intent(Intent.ACTION_SEND);
		if (imgPath == null || imgPath.equals("")) {
			intent.setType("text/plain"); // 纯文本
		} else {
			File f = new File(imgPath);
			if (f != null && f.exists() && f.isFile()) {
				intent.setType("image/png");
				Uri u = Uri.fromFile(f);
				intent.putExtra(Intent.EXTRA_STREAM, u);
			}
		}
		intent.putExtra(Intent.EXTRA_SUBJECT, msgTitle);
		intent.putExtra(Intent.EXTRA_TEXT, msgText);
		intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
		context.startActivity(Intent.createChooser(intent, activityTitle));
	}

	// 通过字符串变量名获取资源ID
	public static int getBigIconResourceId(String recourse_name) {
		R.drawable drawables = new R.drawable();
		// 默认的id
		int resId = 0x7f02000b;
		try {
			// 根据字符串字段名,取字段
			Field field = R.drawable.class.getField(recourse_name);
			// 取值
			resId = (Integer) field.get(drawables);
		} catch (SecurityException e) {
			e.printStackTrace();
		} catch (NoSuchFieldException e) {
			e.printStackTrace();
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		}
		return resId;
	}
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值