返回顶部
首页 > 资讯 > 精选 >如何在Android中编写一个Intent跳转工具类
  • 549
分享到

如何在Android中编写一个Intent跳转工具类

androidintent 2023-05-30 18:05:08 549人浏览 安东尼
摘要

这篇文章给大家介绍如何在Android中编写一个Intent跳转工具类,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、概述Intent的中文意思是“意图,意向”,在Android中提供了Intent机制来协助应用间的

这篇文章给大家介绍如何在Android中编写一个Intent跳转工具类,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

一、概述

Intent的中文意思是“意图,意向”,在Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互。因此,可以将Intent理解为不同组件之间通信的“媒介”专门提供组件互相调用的相关信息。

Intent可以启动一个Activity,也可以启动一个Service,还可以发起一个广播Broadcasts。

二、Intent跳转工具类代码

public class IntentUtil {  private static final String IMAGE_TYPE = "image  public static void showIntent(Activity context, Class<?> clzz, String[] keys, String[] values) {    Intent intent = new Intent(context, clzz);    if (values != null && values.length > 0) {      for (int i = 0; i < values.length; i++) {        if (!TextUtils.isEmpty(keys[i]) && !TextUtils.isEmpty(values[i])) {          intent.putExtra(keys[i], values[i]);        }      }    }    context.startActivity(intent);  }  public static void showIntent(Activity context, Class<?> clzz) {    showIntent(context, clzz, null, null);  }    public static void openCall(Context context, String tel) {    tel = tel.replaceAll("-", "");    Intent intent = new Intent();    // 激活源代码,添加intent对象    intent.setAction("android.intent.action.CALL");    intent.setData(Uri.parse("tel:" + tel));    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);    context.startActivity(intent);  }    public static void pickPhoto(Activity context, int requestCode) {    Intent intent = new Intent();    intent.setType("image  public static void takePhoto(Activity context, int requestCode, Uri cameraUri) {    // 执行拍照前,应该先判断SD卡是否存在    String SDState = Environment.getExternalStorageState();    if (SDState.equals(Environment.MEDIA_MOUNTED)) {      Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);// "android.media.action.IMAGE_CAPTURE"      Logger.i(TAG, "cameraUri.path------>" + cameraUri.getPath());      intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, cameraUri);      context.startActivityForResult(intent, requestCode);    } else {      Toast.makeText(context, "内存卡不存在", Toast.LENGTH_LONG).show();    }  }    public static void takePhoto(Activity context, Uri uri, int requestCode) {    if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {      Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");      ContentValues values = new ContentValues();      values.put(MediaStore.Images.Media.DISPLAY_NAME, String.valueOf(System.currentTimeMillis()) + ".jpg");      values.put(MediaStore.Images.Media.MIME_TYPE, "image  public void openPhotos(Activity context, int requestCode) {    if (openPhotosNORMal(context, requestCode) //        && openPhotosBrowser(context, requestCode) //        && openPhotosFinally(context))      ;  }    private boolean openPhotosFinally(Activity context) {    Toast.makeText(context, "您的系统没有文件浏览器或则相册支持,请安装!", Toast.LENGTH_LONG).show();    return false;  }    public static String getPhotoPathByLocalUri(Context context, Intent data) {    Uri photoUri = data.getData();    String[] filePathColumn = { MediaStore.Images.Media.DATA };    Cursor cursor = context.getContentResolver().query(photoUri, filePathColumn, null, null, null);    cursor.moveToFirst();    int columnIndex = cursor.getColumnIndex(filePathColumn[0]);    String picturePath = cursor.getString(columnIndex);    cursor.close();    return picturePath;  }    private boolean openPhotosNormal(Activity activity, int actResultCode) {    Intent intent = new Intent(Intent.ACTION_PICK, null);    intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, IMAGE_TYPE);    try {      activity.startActivityForResult(intent, actResultCode);    } catch (android.content.ActivityNotFoundException e) {      return true;    }    return false;  }    private boolean openPhotosBrowser(Activity activity, int requestCode) {    Toast.makeText(activity, "没有相册软件,运行文件浏览器", Toast.LENGTH_LONG).show();    Intent intent = new Intent(Intent.ACTION_GET_CONTENT); // "android.intent.action.GET_CONTENT"    intent.setType(IMAGE_TYPE); // 查看类型 String IMAGE_UNSPECIFIED =                  // "image  @SuppressLint("SimpleDateFormat")  public static Uri openCamera(Activity context, int requestCode) {    // 执行拍照前,应该先判断SD卡是否存在    if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {      Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);      SimpleDateFormat timeStampFormat = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss");      String filename = timeStampFormat.format(new Date());      ContentValues values = new ContentValues();      values.put(MediaStore.Images.Media.TITLE, filename);      Uri photoUri = context.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);      intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);      context.startActivityForResult(intent, requestCode);      return photoUri;    } else {      Toast.makeText(context, "内存卡不存在", Toast.LENGTH_LONG).show();    }    return null;  }    public static void doPhoto(Activity context, Intent data, int requestCode, int value, EditText editText,      ImageView imageView, Uri photoUri) {    // 从相册取图片,有些手机有异常情况,请注意    if (requestCode == value) {      if (data == null) {        Toast.makeText(context, "选择图片文件出错", Toast.LENGTH_LONG).show();        return;      }      photoUri = data.getData();      if (photoUri == null) {        Toast.makeText(context, "选择图片文件出错", Toast.LENGTH_LONG).show();        return;      }    }    String[] pojo = { MediaStore.Images.Media.DATA, MediaStore.Images.Media.DISPLAY_NAME };    ContentResolver resolver = context.getContentResolver();    Cursor cursor = resolver.query(photoUri, pojo, null, null, null);    String picPath = null;    String filename = null;    if (cursor != null) {      int columnIndex = cursor.getColumnIndexOrThrow(pojo[0]);      cursor.moveToFirst();      picPath = cursor.getString(columnIndex);      filename = cursor.getString(cursor.getColumnIndexOrThrow(pojo[1]));      editText.requestFocus();      editText.setText(filename);      cursor.close();    }    String dix = filename.substring(filename.lastIndexOf("."), filename.length());    if (filename != null        && (dix.equalsIgnoreCase(".png") || dix.equalsIgnoreCase(".jpg") || dix.equalsIgnoreCase(".gif")            || dix.equalsIgnoreCase(".bmp") || dix.equalsIgnoreCase(".jpeg") || dix              .equalsIgnoreCase(".tiff"))) {      // lastIntent.putExtra(KEY_PHOTO_PATH, picPath);      imageView.setVisibility(View.VISIBLE);      imageView.setImageURI(Uri.parse(picPath));    } else {      imageView.setVisibility(View.GoNE);      Toast.makeText(context, "选择图片文件不正确", Toast.LENGTH_LONG).show();    }  }    public static void openFile(Context context, File file) {    Intent intent = new Intent();    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);// 默认的跳转类型,它会重新创建一个新的Activity    intent.setAction(android.content.Intent.ACTION_VIEW);    // 调用getMIMEType()来取得MimeType    String type = FileUtil.getMIMEType(file);    // 设置intent的file与MimeType    intent.setDataAndType(Uri.fromFile(file), type);    context.startActivity(intent);  }    public static void cropImage(Activity context, Uri uri, int outputX, int outputY, int requestCode) {    // 裁剪图片意图    Intent intent = new Intent("com.android.camera.action.CROP");    intent.setDataAndType(uri, "image  public static int readPictureDegree(String path) {    int degree = 0;    try {      ExifInterface exifInterface = new ExifInterface(path);      int orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION,          ExifInterface.ORIENTATION_NORMAL);      switch (orientation) {      case ExifInterface.ORIENTATION_ROTATE_90:        degree = 90;        break;      case ExifInterface.ORIENTATION_ROTATE_180:        degree = 180;        break;      case ExifInterface.ORIENTATION_ROTATE_270:        degree = 270;        break;      }    } catch (IOException e) {      e.printStackTrace();    }    return degree;  }    public static void saveImage(Activity context, Intent data, int requestCode, ImageView imageView) {    Bitmap photo = null;    Uri photoUri = data.getData();    cropImage(context, photoUri, 500, 500, requestCode);    if (photoUri != null) {      photo = BitmapFactory.decodeFile(photoUri.getPath());    }    if (photo == null) {      Bundle extra = data.getExtras();      if (extra != null) {        photo = (Bitmap) extra.get("data");        ByteArrayOutputStream stream = new ByteArrayOutputStream();        photo.compress(Bitmap.CompressFormat.JPEG, 100, stream);      }    }    imageView.setImageBitmap(photo);  }    public static boolean saveCamera(Activity context, Intent data, Uri cameraUri, EditText editText,      ImageView imageView) {    try {      final Bundle extras = data.getExtras();      if (extras != null) {        Bitmap photo = extras.getParcelable("data");        imageView.setImageBitmap(photo);      }      if (cameraUri != null) {        String path = cameraUri.getPath();        Logger.i(TAG, "path-->" + path);        String filename = path.substring(path.lastIndexOf("/") + 1, path.length());        editText.setText(filename);      }    } catch (Exception e) {      e.printStackTrace();      return false;    }    return true;  }}

关于如何在Android中编写一个Intent跳转工具类就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: 如何在Android中编写一个Intent跳转工具类

本文链接: https://lsjlt.com/news/220146.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何在Android中编写一个Intent跳转工具类
    这篇文章给大家介绍如何在Android中编写一个Intent跳转工具类,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、概述Intent的中文意思是“意图,意向”,在Android中提供了Intent机制来协助应用间的...
    99+
    2023-05-30
    android intent
  • 如何在Android中利用Intent实现一个页面跳转功能
    本篇文章为大家展示了如何在Android中利用Intent实现一个页面跳转功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Intent实现页面之间跳转1、无返回值startActivity(int...
    99+
    2023-05-30
    android intent
  • 基于WPF编写一个串口转UDP工具
    目录框架准备初始化串口设置UDP设置发送设置转发设置测试串口是设备和上位机通信的常用接口,UDP则是网络通信常用的通信协议,通过将串口设备上传的指令,用UDP发送出去,或者将UDP传...
    99+
    2023-05-14
    WPF实现串口转UDP WPF串口转UDP WPF 串口 UDP
  • 如何在java中封装一个JDBC工具类
    如何在java中封装一个JDBC工具类?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布...
    99+
    2023-06-14
  • 使用Java编写一个图片word互转工具
    目录前言实现方法使用前言 前段时间一直使用到word文档转pdf或者pdf转word,寻思着用Java应该是可以实现的,于是花了点时间写了个文件转换工具 源码weloe/FileCo...
    99+
    2023-01-10
    图片word互转工具 PDF Word文件转换工具 java图片word互转
  • Java如何编写超时工具类
    这篇文章主要介绍Java如何编写超时工具类,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Java的优点是什么1. 简单,只需理解基本的概念,就可以编写适合于各种情况的应用程序;2. 面向对象;3. 分布性,Java是...
    99+
    2023-06-14
  • java中如何编写一个circular类
    在Java中,你可以通过创建一个名为Circular的类来表示圆形。以下是一个示例代码: public class Circular...
    99+
    2023-10-26
    java
  • 如何使用 Go 编写一个 Shell 同步工具?
    在日常开发中,我们经常需要在不同的机器之间同步文件或者目录。虽然有很多云存储服务可以使用,但是有时候我们还是需要一些本地的工具来完成这些任务。在这篇文章中,我们将介绍如何使用 Go 编写一个 Shell 同步工具。 首先,我们需要明确一下...
    99+
    2023-10-31
    shell 同步 索引
  • 基于WPF怎么编写一个串口转UDP工具
    这篇“基于WPF怎么编写一个串口转UDP工具”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“基于WPF怎么编写一个串口转UDP...
    99+
    2023-07-05
  • 基于vite2+Vue3如何编写一个在线帮助文档工具
    本篇内容主要讲解“基于vite2+Vue3如何编写一个在线帮助文档工具”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“基于vite2+Vue3如何编写一个在线帮助文档工具”吧!技术栈vite: ^...
    99+
    2023-06-29
  • 基于Java编写一个PDF与Word文件转换工具
    目录前言实现方法pom.xml策略接口PDF转图片实现PDF转word实现word转htmlword转图片word转pdf使用前言 前段时间一直使用到word文档转pdf或者pdf转...
    99+
    2023-01-10
    Java PDF转Word Java Word转PDF Java Word PDF
  • 如何在Java中自定义封装一个JDBC工具类
    如何在Java中自定义封装一个JDBC工具类?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。步骤① 创建配置文件(config.properties),用于存放注册驱动和连接...
    99+
    2023-06-06
  • Linux中如何用Node.js写一个命令行工具
    本文小编为大家详细介绍“Linux中如何用Node.js写一个命令行工具”,内容详细,步骤清晰,细节处理妥当,希望这篇“Linux中如何用Node.js写一个命令行工具”文章能帮助大家解决疑惑,下面跟着小编...
    99+
    2023-05-25
    linux node.js
  • 利用Java怎么编写一个DES加密解密工具类
    今天就跟大家聊聊有关利用Java怎么编写一个DES加密解密工具类,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。DesUtil.javapackage lsy;import java....
    99+
    2023-05-31
    java des ava
  • 基于vite2+Vue3编写一个在线帮助文档工具
    目录技术栈建立库项目(@naturefw/press-edit)实现文档的编写、浏览功能编辑状态的功能浏览状态的功能实现导航实现菜单实现n级分组菜单实现菜单的维护功能实现Markdo...
    99+
    2024-04-02
  • 怎么在java中封装一个JDBC工具类
    本篇文章给大家分享的是有关怎么在java中封装一个JDBC工具类,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序...
    99+
    2023-06-06
  • 如何编写一个封装的Ajax类
    本篇内容主要讲解“如何编写一个封装的Ajax类”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何编写一个封装的Ajax类”吧!用法:  new&nbs...
    99+
    2024-04-02
  • 如何使用Node.js写一个命令行工具
    这篇文章给大家分享的是有关如何使用Node.js写一个命令行工具的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体如下:操作系统需要为Linux1. 目标在命令行输入自己写的命令...
    99+
    2024-04-02
  • Android中怎么实现一个图片切割工具类
    Android中怎么实现一个图片切割工具类,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。图片切割工具类定义:public class ImageSpli...
    99+
    2023-05-30
    android
  • Android中怎么实现一个手机管理工具类
    本篇文章给大家分享的是有关Android中怎么实现一个手机管理工具类,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。工具类内的方法:getInstance  ...
    99+
    2023-05-30
    android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作