资讯专栏INFORMATION COLUMN

Intent 常用方法总结

Michael_Ding / 2110人阅读

极力推荐文章:欢迎收藏
Android 干货分享

阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android

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

通过组件名启动

通过包名、类名启动

通过类启动

打电话

发短信

打开网页

播放音乐

打开图片

创建闹钟

创建定时器

添加日历事件

拍照

打开Camera

打开视频录像

选择联系人

查看联系人

编辑联系人

插入联系人

写邮件

打开地图指定点

检索特定类型图片

Intent 简介请看上篇文章
[Intent 使用方法详解](
http://www.jianshu.com/p/81e4...

1. 通过组件名启动 Activity

使用方法

    /**
     * 通过组件名启动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

使用方法

    /**
     * 通过包名类名启动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. 通过类启动 Activity

使用方法

    /**
     * 通过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. 打电话

使用Intent 打电话 方法如下

    /**
     * 打电话
     * **/
    public static void MakeCall(Context context, int number) {

        // 需要打电话权限
        // 

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

    }

#####注意:
打电话需要申请权限

5. 发短信

使用方法

1.基础发送短信

    /**
     * 1.基础发送短信
     * **/
    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);
        }
    }

2.自定义 发送短信

    /**
     * 2.自定义 发送短信
     * **/
    public static void SendMmsCustom(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);
        

设置闹钟action 机权限

  
    
        
            
                

                
            
        

显示所有闹钟

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);
        }
    }

添加设置SET_TIMER的Action

        
            
                
                

                
            
        
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);
        }
    }

日历事件过滤

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);
        }

    }

拍照过滤

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 过滤

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);
        }
    }

打开录像功能过滤

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 ViewContact(Context context, Uri contactUri) {
        Intent intent = new Intent(Intent.ACTION_VIEW, contactUri);
        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);
        }
    }

邮件过滤

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);
        }
    }
21 检索特定类型图片
    /***
     * 检索特定类型图片 获取照片
     * **/
    public static void selectImage(Context context) {
        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
        intent.setType("image/*");
        if (intent.resolveActivity(context.getPackageManager()) != null) {
            context.startActivity(intent);
        }
    }

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/75829.html

相关文章

  • Intent 使用详解

    摘要:注意类别指示此的图标应放入系统的应用启动器。如果元素未使用指定图标,则系统将使用元素中的图标使用方法对象是对象的包装器。主要应用于以下场景通知应用小部件定时任务使用注意事项适用于启动的。 showImg(https://segmentfault.com/img/remote/1460000019975019?w=157&h=54); 极力推荐文章:欢迎收藏Android 干货分享 s...

    lifesimple 评论0 收藏0
  • Android开发经验实战总结

    摘要:以前一直想写一篇总结开发经验的文章,估计当时的我还达不到某种水平,所以思路跟不上,下笔又捉襟见肘。在需求都还没完成的时候把大量时间花在优化上是本末倒置的优化要用实际数据说话,借助测试工具进行检测如网易的腾讯的和,科大讯飞的,的。 以前一直想写一篇总结 Android 开发经验的文章,估计当时的我还达不到某种水平,所以思路跟不上,下笔又捉襟见肘。近日,思路较为明朗,于是重新操起键盘开始码...

    iflove 评论0 收藏0
  • Activity 使用详解

    摘要:极力推荐文章欢迎收藏干货分享阅读五分钟,每日十点,和您一起终身学习,这里是程序员本篇文章主要介绍开发中的部分知识点,通过阅读本篇文章,您将收获以下内容生命周期简介必须在中注册启动的方法启动带返回值的结束方法状态保存,恢复的方法面 showImg(https://upload-images.jianshu.io/upload_images/5851256-0b56fc8e812963d7...

    Caicloud 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<