Intent-常用方法总结

4次阅读

共计 9007 个字符,预计需要花费 23 分钟才能阅读完成。

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

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

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

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

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) {

        // 需要打电话权限
        // <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. 发短信

  • 使用方法

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 机权限
  <!-- 设置闹钟的权限 -->
    <uses-permission android:name="com.android.alarm.permission.SET_ALARM" />
        <activity android:name=".Intent.IntentMethod" >
            <intent-filter>
                <action android:name="android.intent.action.SET_ALARM" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
  • 显示所有闹钟

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

        <activity android:name=".Intent.IntentMethod" >
            <intent-filter>
                <action android:name="android.intent.action.SET_ALARM" />
                <action android:name="android.intent.action.SET_TIMER" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

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

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

正文完
 0