Intent 常用方法总结

Intent 简介请看上篇文章
Intent 使用方法详解链接:
http://www.jianshu.com/p/81e4951d8054

本文主要是总结Intent 常用的方法,并封装成Utils类中
主要涉及以下内容

  1. 通过组件名启动
  2. 通过包名、类名启动
  3. 通过类启动
  4. 打电话
  5. 发短信
  6. 打开网页
  7. 播放音乐
  8. 打开图片
  9. 创建闹钟
  10. 创建定时器
  11. 添加日历事件
  12. 拍照
  13. 打开Camera
  14. 打开视频录像
  15. 选择联系人
  16. 查看联系人
  17. 编辑联系人
  18. 插入联系人
  19. 写邮件
  20. 打开地图指定点

欢迎关注微信公众号:程序员Android
公众号ID:ProgramAndroid
获取更多信息

微信公众号:ProgramAndroid

微信公众号:ProgramAndroid

我们不是牛逼的程序员,我们只是程序开发中的垫脚石。
我们不发送红包,我们只是红包的搬运工。

1. 通过组件名启动

  • 使用方法
    /**
     * 通过组件名启动Activity
     * **/
    public static void StartIntentFromComponent(Context context,
            Class intentClass) {
        Intent intent = new Intent();
        // 1.使用ComponentName 启动Activity
        ComponentName componentname = new ComponentName(context, intentClass);
        intent.setComponent(componentname);
        if (intent.resolveActivity(context.getPackageManager()) != null) {
            context.startActivity(intent);
        }
    }

2. 通过包名、类名启动

  • 使用方法
/**
     * 通过包名类名启动Activity
     * **/
    public static void StartIntentFromPackage(Context context,
            String packageName, String className) {
        Intent intent = new Intent();
        // 1.使用ComponentName 启动Activity
        ComponentName componentname = new ComponentName(packageName, className);
        intent.setComponent(componentname);
        if (intent.resolveActivity(context.getPackageManager()) != null) {
            context.startActivity(intent);
        }
    }

3. 通过类启动

  • 使用方法

    /**
     * 通过Class启动Activity
     * **/
    public static void StartIntentFromClass(Context context, Class<?> classOpen) {
        Intent intent = new Intent();
        // 2.使用Setclass方法,类方法间接使用ComponentName
        intent.setClass(context, classOpen);
        if (intent.resolveActivity(context.getPackageManager()) != null) {
            context.startActivity(intent);
        }
    }

4. 打电话

  • 使用方法
/**
     * 打电话
     * **/
    public static void MakeCall(Context context, int number) {

        // 需要打电话权限
        // <uses-permission android:name="android.permission.CALL_PHONE"/>

        Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"
                + number));
        if (intent.resolveActivity(context.getPackageManager()) != null) {
            context.startActivity(intent);
        }

    }

注意:
打电话需要申请权限
<uses-permission android:name="android.permission.CALL_PHONE"/>

5. 发短信

  • 使用方法
/**
     * 发送短信
     * **/
    public static void SendMms(Context context, String mmsString) {

        Intent sendIntent = new Intent();
        sendIntent.setAction(Intent.ACTION_SEND);
        sendIntent.putExtra(Intent.EXTRA_TEXT, mmsString);
        sendIntent.setType("text/plain");
//      sendIntent.setData(Uri.parse("smsto:"));  
        // This ensures only SMS apps respond
        // 修改 Intnent 选择器Tittle
        String title = context.getResources().getString(R.string.hello_world);
        Intent chooser = Intent.createChooser(sendIntent, title);

        // 验证是否有Activity 接收
        if (sendIntent.resolveActivity(context.getPackageManager()) != null) {
            context.startActivity(chooser);
        }
    }

6. 打开网页

  • 使用方法
/**
     * 打开网页
     * **/
    public static void OpenInternetUri(Context context, String uri) {

        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
        if (intent.resolveActivity(context.getPackageManager()) != null) {
            context.startActivity(intent);
        }

    }

7. 播放音乐

  • 使用方法
/**
     * 播放音乐
     * **/
    public static void PlayMusic(Context context, String path) {

        // String
        // path=Environment.getExternalStorageDirectory().getAbsolutePath()+"test.mp3";
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(Uri.parse("file:///" + path), "audio/*");
        if (intent.resolveActivity(context.getPackageManager()) != null) {
            context.startActivity(intent);
        }

    }
  • 播放特定艺术家专辑
    /**
     * 搜索特定艺术家专辑
     * **/
    public static void playSearchArtist(Context context, String artist) {

         Intent intent = new Intent(MediaStore.INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH);
            intent.putExtra(MediaStore.EXTRA_MEDIA_FOCUS,
                            MediaStore.Audio.Artists.ENTRY_CONTENT_TYPE);
            intent.putExtra(MediaStore.EXTRA_MEDIA_ARTIST, artist);
            intent.putExtra(SearchManager.QUERY, artist);
        if (intent.resolveActivity(context.getPackageManager()) != null) {
            context.startActivity(intent);
        }

    }

8. 打开图片

  • 使用方法
/**
     * 打开图片
     * **/
    public static void OpenImage(Context context, File file) {
        // File file =new File("/mnt/sdcard/1.png");
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(Uri.fromFile(file), "image/*");

        if (intent.resolveActivity(context.getPackageManager()) != null) {
            context.startActivity(intent);
        }

    }

9. 创建闹钟

  • 使用方法

    /**
     * 创建闹钟
     * **/
    
    public static void SetAlarmIntent(Context context, String message,
            int hour, int minutes) {
        Intent intent = new Intent(AlarmClock.ACTION_SET_ALARM)
                .putExtra(AlarmClock.EXTRA_MESSAGE, message)
                .putExtra(AlarmClock.EXTRA_HOUR, hour)
                .putExtra(AlarmClock.EXTRA_MINUTES, minutes);

        if (intent.resolveActivity(context.getPackageManager()) != null) {
            context.startActivity(intent);
        }
    }
  • 设置闹钟过滤
// 设置闹钟、定时器
     <intent-filter>
        <action android:name="android.intent.action.SET_TIMER" />
        <category android:name="android.intent.category.DEFAULT" />
     </intent-filter>
  • 显示所有闹钟
// 显示所有闹钟
     <intent-filter>
           <action android:name="android.intent.action.SHOW_ALARMS" />
           <category android:name="android.intent.category.DEFAULT" />
     </intent-filter>
    

10. 创建定时器

  • 使用方法
/**
     * 创建定时器
     * **/
    public static void StartTimer(Context context, String message, int seconds) {
        Intent intent = new Intent(AlarmClock.ACTION_SET_TIMER)
                .putExtra(AlarmClock.EXTRA_MESSAGE, message)
                .putExtra(AlarmClock.EXTRA_LENGTH, seconds)
                .putExtra(AlarmClock.EXTRA_SKIP_UI, true);
        if (intent.resolveActivity(context.getPackageManager()) != null) {
            context.startActivity(intent);
        }
    }

11. 添加日历事件

  • 使用方法
    /**
     * 添加日历事件
     * **/
    
    public static void AddCalendarEvent(Context context, String title,
            String location, Calendar begin, Calendar end) {
        Intent intent = new Intent(Intent.ACTION_INSERT)
                .setData(Events.CONTENT_URI).putExtra(Events.TITLE, title)
                .putExtra(Events.EVENT_LOCATION, location)
                .putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, begin)
                .putExtra(CalendarContract.EXTRA_EVENT_END_TIME, end);
        if (intent.resolveActivity(context.getPackageManager()) != null) {
            context.startActivity(intent);
        }
    }
  • 日历事件过滤
 <intent-filter>
             <action android:name="android.intent.action.INSERT" />
             <data android:mimeType="vnd.android.cursor.dir/event" />
             <category android:name="android.intent.category.DEFAULT" />
     </intent-filter>

12. 拍照

  • 使用方法
public static void CapturePhoto(Context context, String targetFilename,
            Uri mLocationForPhotos) {
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        intent.putExtra(MediaStore.EXTRA_OUTPUT,
                Uri.withAppendedPath(mLocationForPhotos, targetFilename));
        if (intent.resolveActivity(context.getPackageManager()) != null) {
            context.startActivity(intent);
        }

    }
  • 拍照过滤
 <intent-filter>
           <action android:name="android.media.action.IMAGE_CAPTURE" />
           <category android:name="android.intent.category.DEFAULT" />
     </intent-filter>

13. 打开Camera

  • 使用方法
/**
     * 打开Camera
     * **/

    public static void OpenCamera(Context context) {
        Intent intent = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA);
        if (intent.resolveActivity(context.getPackageManager()) != null) {
            context.startActivity(intent);
        }
    }

  • 打开Camera 过滤
     <intent-filter>
          <action android:name="android.media.action.STILL_IMAGE_CAMERA" />
          <category android:name="android.intent.category.DEFAULT" />
     </intent-filter>

14. 打开视频录像

  • 使用方法
    /**
     * 打开录像视频
     * **/

    public static void OpenCameraVideo(Context context) {
        Intent intent = new Intent(MediaStore.INTENT_ACTION_VIDEO_CAMERA);
        if (intent.resolveActivity(context.getPackageManager()) != null) {
            context.startActivity(intent);
        }
    }
  • 打开录像功能过滤
     <intent-filter>
         <action android:name="android.media.action.VIDEO_CAMERA" />
         <category android:name="android.intent.category.DEFAULT" />
     </intent-filter>

15. 选择联系人

  • 使用方法
    /***
     * 选择联系人
     * **/
    public static void SelectContact(Context context) {
        Intent intent = new Intent(Intent.ACTION_PICK);
        intent.setType(ContactsContract.Contacts.CONTENT_TYPE);
        if (intent.resolveActivity(context.getPackageManager()) != null) {
            context.startActivity(intent);
        }
    }

16. 查看联系人

  • 使用方法
    /***
     * 选择联系人
     * **/
    public static void SelectContact(Context context) {
        Intent intent = new Intent(Intent.ACTION_PICK);
        intent.setType(ContactsContract.Contacts.CONTENT_TYPE);
        if (intent.resolveActivity(context.getPackageManager()) != null) {
            context.startActivity(intent);
        }
    }

17. 编辑联系人

  • 使用方法
    /***
     * 编辑联系人
     * **/
    public static void EditContact(Context context, Uri contactUri, String email) {
        Intent intent = new Intent(Intent.ACTION_EDIT);
        intent.setData(contactUri);
        intent.putExtra(Intents.Insert.EMAIL, email);
        if (intent.resolveActivity(context.getPackageManager()) != null) {
            context.startActivity(intent);
        }
    }

18. 插入联系人

  • 使用方法
    /***
     * 插入联系人
     * **/
    public static void InsertContact(Context context, String name, String email) {
        Intent intent = new Intent(Intent.ACTION_INSERT);
        intent.setType(Contacts.CONTENT_TYPE);
        intent.putExtra(Intents.Insert.NAME, name);
        intent.putExtra(Intents.Insert.EMAIL, email);
        if (intent.resolveActivity(context.getPackageManager()) != null) {
            context.startActivity(intent);
        }
    }

19. 写邮件

  • 使用方法
    /***
     * 写邮件
     * **/
    public static void composeEmail(Context context, String[] addresses,
            String subject, Uri attachment) {
        Intent intent = new Intent(Intent.ACTION_SEND);
        intent.setType("*/*");
        // intent.setData(Uri.parse("mailto:"));
        // only email apps should handle this
        intent.putExtra(Intent.EXTRA_EMAIL, addresses);
        intent.putExtra(Intent.EXTRA_SUBJECT, subject);
        intent.putExtra(Intent.EXTRA_STREAM, attachment);
        if (intent.resolveActivity(context.getPackageManager()) != null) {
            context.startActivity(intent);
        }
    }
  • 邮件过滤
      <intent-filter>
      <action android:name="android.intent.action.SEND" />
      <data android:type="*/*" />
      <category android:name="android.intent.category.DEFAULT" />
  </intent-filter>
  <intent-filter>
      <action android:name="android.intent.action.SENDTO" />
      <data android:scheme="mailto" />
      <category android:name="android.intent.category.DEFAULT" />
  </intent-filter>

20. 打开地图指定点

  • 使用方法
/***
     *打开地图指定点
     * **/
    public static void callCar(Context context,Uri geoLocation) {
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setData(geoLocation);
        if (intent.resolveActivity(context.getPackageManager()) != null) {
            context.startActivity(intent);
        }
    }

至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

如有侵权,请联系小编,小编对此深感抱歉,届时小编会删除文章,立即停止侵权行为,请您多多包涵。

既然都看到这里,领两个红包在走吧!
以下两个红包每天都可以领取

1.支付宝搜索 522398497,或扫码支付宝红包海报。

支付宝扫一扫,每天领取大红包

2.微信红包,微信扫一扫即可领取红包

 

微信扫一扫,每天领取微信红包

小礼物走一走,来简书关注我

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Android开发框架是一套用于简化和加速Android应用程序开发的工具集合。它提供了一种结构化的方法来组织和管理应用程序的代码、资源和功能模块。Android开发框架包含了许多组件和库,用于构建用户界面、处理数据、管理应用程序生命周期等。下面是Android开发框架的基本概念、组成部分以及常用的开发模式的介绍: 1. 基本概念: - Activity(活动):用户界面的基本单元,负责与用户交互和展示数据。 - Fragment(片段):可嵌入到Activity中的独立模块,提供灵活的界面组合和复用。 - Intent(意图):用于在不同组件之间传递数据和执行操作。 - Service(服务):在后台执行长时间运行的任务,不与用户直接交互。 - Content Provider(内容提供者):用于共享和管理应用程序的数据,实现数据的增删改查操作。 - Broadcast Receiver(广播接收器):接收和响应系统或其他应用程序发送的广播消息。 2. 组成部分: - Android SDK(软件开发工具包):包含了构建Android应用程序所需的开发工具、库和文档。 - Android API(应用程序编程接口):定义了开发者可以使用的类和方法,用于访问系统功能和执行操作。 - Android运行时环境:提供了应用程序运行所需的各种库和系统服务。 - Android虚拟机(Dalvik或ART):负责在设备上执行Android应用程序的字节码。 3. 常用的开发模式: - MVC(Model-View-Controller)模式:将应用程序分为模型(数据)、视图(用户界面)和控制器(业务逻辑),实现了视图和数据之间的解耦。 - MVP(Model-View-Presenter)模式:将控制器拆分为Presenter,负责处理视图和数据之间的交互,进一步解耦视图和业务逻辑。 - MVVM(Model-View-ViewModel)模式:引入了ViewModel层,负责管理视图状态和业务逻辑,使视图与数据的绑定更加简洁和灵活。 这些开发模式都有各自的优势和适用场景,开发者可以根据项目需求和个人偏好选择合适的模式。 总结:Android开发框架是为了简化和加速Android应用程序开发而设计的工具集合。它由Activity、FragmentIntent、Service、Content Provider、Broadcast Receiver等组件组成,提供了一种结构化的方法来组织和管理应用程序的代码、资源和功能模块。常用的开发模式包括MVC、MVP和MVVM,开发者可以根据项目需求选择合适的模式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员Android

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值