意图相关→IntentUtils

 
   
  import android.content.ComponentName;
  import android.content.Intent;
  import android.net.Uri;
  import android.os.Build;
  import android.os.Bundle;
  import android.provider.MediaStore;
  import android.support.v4.content.FileProvider;
  import android.webkit.MimeTypeMap;
   
  import java.io.File;
   
  /**
  * <pre>
  * author: Blankj
  * blog : http://blankj.com
  * time : 2016/9/23
  * desc : 意图相关工具类
  * </pre>
  */
  public final class IntentUtils {
   
  private IntentUtils() {
  throw new UnsupportedOperationException("u can't fuck me...");
  }
   
  /**
  * 获取安装App(支持6.0)的意图
  *
  * @param filePath 文件路径
  * @return intent
  */
  public static Intent getInstallAppIntent(String filePath) {
  return getInstallAppIntent(FileUtils.getFileByPath(filePath));
  }
   
  /**
  * 获取安装App(支持6.0)的意图
  *
  * @param file 文件
  * @return intent
  */
  public static Intent getInstallAppIntent(File file) {
  if (file == null) return null;
  Intent intent = new Intent(Intent.ACTION_VIEW);
  String type;
   
  if (Build.VERSION.SDK_INT < 23) {
  type = "application/vnd.android.package-archive";
  } else {
  type = MimeTypeMap.getSingleton().getMimeTypeFromExtension(FileUtils.getFileExtension(file));
  }
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
  intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
  Uri contentUri = FileProvider.getUriForFile(Utils.getContext(), "com.your.package.fileProvider", file);
  intent.setDataAndType(contentUri, type);
  }
  intent.setDataAndType(Uri.fromFile(file), type);
  return intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  }
   
  /**
  * 获取卸载App的意图
  *
  * @param packageName 包名
  * @return intent
  */
  public static Intent getUninstallAppIntent(String packageName) {
  Intent intent = new Intent(Intent.ACTION_DELETE);
  intent.setData(Uri.parse("package:" + packageName));
  return intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  }
   
  /**
  * 获取打开App的意图
  *
  * @param packageName 包名
  * @return intent
  */
  public static Intent getLaunchAppIntent(String packageName) {
  return Utils.getContext().getPackageManager().getLaunchIntentForPackage(packageName);
  }
   
  /**
  * 获取App具体设置的意图
  *
  * @param packageName 包名
  * @return intent
  */
  public static Intent getAppDetailsSettingsIntent(String packageName) {
  Intent intent = new Intent("android.settings.APPLICATION_DETAILS_SETTINGS");
  intent.setData(Uri.parse("package:" + packageName));
  return intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  }
   
  /**
  * 获取分享文本的意图
  *
  * @param content 分享文本
  * @return intent
  */
  public static Intent getShareTextIntent(String content) {
  Intent intent = new Intent(Intent.ACTION_SEND);
  intent.setType("text/plain");
  intent.putExtra(Intent.EXTRA_TEXT, content);
  return intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  }
   
  /**
  * 获取分享图片的意图
  *
  * @param content 文本
  * @param imagePath 图片文件路径
  * @return intent
  */
  public static Intent getShareImageIntent(String content, String imagePath) {
  return getShareImageIntent(content, FileUtils.getFileByPath(imagePath));
  }
   
  /**
  * 获取分享图片的意图
  *
  * @param content 文本
  * @param image 图片文件
  * @return intent
  */
  public static Intent getShareImageIntent(String content, File image) {
  if (!FileUtils.isFileExists(image)) return null;
  return getShareImageIntent(content, Uri.fromFile(image));
  }
   
  /**
  * 获取分享图片的意图
  *
  * @param content 分享文本
  * @param uri 图片uri
  * @return intent
  */
  public static Intent getShareImageIntent(String content, Uri uri) {
  Intent intent = new Intent(Intent.ACTION_SEND);
  intent.putExtra(Intent.EXTRA_TEXT, content);
  intent.putExtra(Intent.EXTRA_STREAM, uri);
  intent.setType("image/*");
  return intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  }
   
  /**
  * 获取其他应用组件的意图
  *
  * @param packageName 包名
  * @param className 全类名
  * @return intent
  */
  public static Intent getComponentIntent(String packageName, String className) {
  return getComponentIntent(packageName, className, null);
  }
   
  /**
  * 获取其他应用组件的意图
  *
  * @param packageName 包名
  * @param className 全类名
  * @param bundle bundle
  * @return intent
  */
  public static Intent getComponentIntent(String packageName, String className, Bundle bundle) {
  Intent intent = new Intent(Intent.ACTION_VIEW);
  if (bundle != null) intent.putExtras(bundle);
  ComponentName cn = new ComponentName(packageName, className);
  intent.setComponent(cn);
  return intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  }
   
  /**
  * 获取关机的意图
  * <p>需添加权限 {@code <uses-permission android:name="android.permission.SHUTDOWN"/>}</p>
  *
  * @return intent
  */
  public static Intent getShutdownIntent() {
  Intent intent = new Intent(Intent.ACTION_SHUTDOWN);
  return intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  }
   
  /**
  * 获取跳至拨号界面意图
  *
  * @param phoneNumber 电话号码
  */
  public static Intent getDialIntent(String phoneNumber) {
  Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + phoneNumber));
  return intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  }
   
  /**
  * 获取拨打电话意图
  * <p>需添加权限 {@code <uses-permission android:name="android.permission.CALL_PHONE"/>}</p>
  *
  * @param phoneNumber 电话号码
  */
  public static Intent getCallIntent(String phoneNumber) {
  Intent intent = new Intent("android.intent.action.CALL", Uri.parse("tel:" + phoneNumber));
  return intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  }
   
  /**
  * 获取跳至发送短信界面的意图
  *
  * @param phoneNumber 接收号码
  * @param content 短信内容
  */
  public static Intent getSendSmsIntent(String phoneNumber, String content) {
  Uri uri = Uri.parse("smsto:" + phoneNumber);
  Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
  intent.putExtra("sms_body", content);
  return intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  }
   
   
  /**
  * 获取拍照的意图
  *
  * @param outUri 输出的uri
  * @return 拍照的意图
  */
  public static Intent getCaptureIntent(Uri outUri) {
  Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
  intent.putExtra(MediaStore.EXTRA_OUTPUT, outUri);
  return intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_ACTIVITY_NEW_TASK);
  }
  /*
  *//**
  * 获取选择照片的Intent
  *
  * @return
  *//*
  public static Intent getPickIntentWithGallery() {
  Intent intent = new Intent(Intent.ACTION_PICK);
  return intent.setType("image*//*");
  }
 
  *//**
  * 获取从文件中选择照片的Intent
  *
  * @return
  *//*
  public static Intent getPickIntentWithDocuments() {
  Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
  return intent.setType("image*//*");
  }
 
 
  public static Intent buildImageGetIntent(Uri saveTo, int outputX, int outputY, boolean returnData) {
  return buildImageGetIntent(saveTo, 1, 1, outputX, outputY, returnData);
  }
 
  public static Intent buildImageGetIntent(Uri saveTo, int aspectX, int aspectY,
  int outputX, int outputY, boolean returnData) {
  Intent intent = new Intent();
  if (Build.VERSION.SDK_INT < 19) {
  intent.setAction(Intent.ACTION_GET_CONTENT);
  } else {
  intent.setAction(Intent.ACTION_OPEN_DOCUMENT);
  intent.addCategory(Intent.CATEGORY_OPENABLE);
  }
  intent.setType("image*//*");
  intent.putExtra("output", saveTo);
  intent.putExtra("aspectX", aspectX);
  intent.putExtra("aspectY", aspectY);
  intent.putExtra("outputX", outputX);
  intent.putExtra("outputY", outputY);
  intent.putExtra("scale", true);
  intent.putExtra("return-data", returnData);
  intent.putExtra("outputFormat", Bitmap.CompressFormat.PNG.toString());
  return intent;
  }
 
  public static Intent buildImageCropIntent(Uri uriFrom, Uri uriTo, int outputX, int outputY, boolean returnData) {
  return buildImageCropIntent(uriFrom, uriTo, 1, 1, outputX, outputY, returnData);
  }
 
  public static Intent buildImageCropIntent(Uri uriFrom, Uri uriTo, int aspectX, int aspectY,
  int outputX, int outputY, boolean returnData) {
  Intent intent = new Intent("com.android.camera.action.CROP");
  intent.setDataAndType(uriFrom, "image*//*");
  intent.putExtra("crop", "true");
  intent.putExtra("output", uriTo);
  intent.putExtra("aspectX", aspectX);
  intent.putExtra("aspectY", aspectY);
  intent.putExtra("outputX", outputX);
  intent.putExtra("outputY", outputY);
  intent.putExtra("scale", true);
  intent.putExtra("return-data", returnData);
  intent.putExtra("outputFormat", Bitmap.CompressFormat.PNG.toString());
  return intent;
  }
 
  public static Intent buildImageCaptureIntent(Uri uri) {
  Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
  intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
  return intent;
  }*/
  }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值