package cc.duduhuo.simpler.util; import android.app.Activity; import android.content.ClipData; import android.content.ClipboardManager; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.net.Uri; import android.os.Environment; import android.provider.MediaStore; import android.support.v4.content.FileProvider; import java.io.File; import java.util.List; import cc.duduhuo.applicationtoast.AppToast; import cc.duduhuo.simpler.R; import cc.duduhuo.simpler.app.App; import cc.duduhuo.simpler.config.BaseConfig; /** * ======================================================= * 作者:liying - [email protected] * 日期:2017/3/31 19:07 * 版本:1.0 * 描述:通用工具类 * 备注: * ======================================================= */ public class CommonUtils { /** * 拷贝文本 * * @param context * @param text 拷贝的文本 */ public static void copyText(Context context, String text) { ClipboardManager cmbName = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE); ClipData clipDataName = ClipData.newPlainText(null, text); cmbName.setPrimaryClip(clipDataName); } /** * 分享文本 * * @param context * @param text 分享的文本 */ public static void shareText(Context context, String text) { Intent shareIntent = new Intent(); shareIntent.setAction(Intent.ACTION_SEND); shareIntent.setType("text/*"); shareIntent.putExtra(Intent.EXTRA_TEXT, text); ComponentName componentName = shareIntent.resolveActivity(context.getPackageManager()); if (componentName != null) { context.startActivity(Intent.createChooser(shareIntent, context.getString(R.string.share_to))); } else { AppToast.showToast("无法分享。"); } } /** * 打开浏览器 * * @param context * @param url 浏览器加载的网址 */ public static void openBrowser(Context context, String url) { Uri uri = Uri.parse(url); Intent intent = new Intent(Intent.ACTION_VIEW, uri); ComponentName componentName = intent.resolveActivity(App.getInstance().getPackageManager()); if (componentName != null) { context.startActivity(intent); } else { AppToast.showToast("您没有安装浏览器。"); } } /** * 统计微博字符个数 * * @param s 待统计字符串 * @return */ public static int calcLength(String s) { double len = 0; for (int i = 0; i < s.length(); i++) { int temp = (int) s.charAt(i); if (temp > 0 && temp < 127) { len += 0.5; } else { len++; } } return (int) len; } /** * 拍照 */ public static String capture(Activity activity, int requestCode) { Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); String picName = null; if (cameraIntent.resolveActivity(activity.getPackageManager()) != null) { if (BaseConfig.sSDCardExist) { picName = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + Environment.DIRECTORY_DCIM + File.separator + "Camera" + File.separator + activity.getString(R.string.app_name) + "_" + System.currentTimeMillis() + ".jpg"; } else { picName = activity.getCacheDir().getPath() + File.separator + activity.getString(R.string.app_name) + "_" + System.currentTimeMillis() + ".jpg"; } File photoFile = new File(picName); // FileUtils.createFile(photoFile); Uri uri = FileProvider.getUriForFile(activity, App.getInstance().getApplicationId() + ".provider", photoFile); List<ResolveInfo> resInfoList = activity.getPackageManager() .queryIntentActivities(cameraIntent, PackageManager.MATCH_DEFAULT_ONLY); for (ResolveInfo resolveInfo : resInfoList) { String packageName = resolveInfo.activityInfo.packageName; activity.grantUriPermission(packageName, uri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION); } cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri); activity.startActivityForResult(cameraIntent, requestCode); } else { AppToast.showToast(R.string.open_camera_failure); } return picName; } /** * 裁剪图片方法实现 * * @param activity * @param uri 图片uri * @param requestCode 请求码 */ public static void clipPhoto(Activity activity, Uri uri, int requestCode) { Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(uri, "image/*"); intent.putExtra("crop", "true"); // 裁剪框的比例,1:1 intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); // 图片格式 intent.putExtra("outputFormat", "PNG"); intent.putExtra("noFaceDetection", true);// 取消人脸识别 intent.putExtra("return-data", true);// true:不返回uri,false:返回uri activity.startActivityForResult(intent, requestCode); } /** * 从Url中获取文件名 * * @param url * @return */ public static String getFileNameFromUrl(String url) { String name = String.valueOf(System.currentTimeMillis()); try { name = url.substring(url.lastIndexOf('/') + 1); } catch (Exception e) { e.printStackTrace(); } return name; } }