Intent简介

Intent的作用有三个:

  • 启动Activity
  • 启动服务(请使用显示intent)
  • 传递广播

系统组件都是通过Intent来传递信息,大大降低了耦合性。

1、 Intent的构成

  • 组件名称:setClass()、setComponment()、intent的构造函数(传入了要启动的类名)
  • action(==必选==):要执行的操作的字符串

    ACTION_VIEW:启动可以展示信息的某项ACtivity(图库、地图)

    ACTION_SEND:“共享”操作(电邮、社交共享)

  • data:待操作的数据的引用,由数据协议、数据URI、MIME构成

    只设置URI,调用 setData(),只设置 MIME 类型,调用 setType()。若要同时设置两者,必须调用setDataAndType()

    < scheme>://< host>:< port>/< path>

    content://com.example.project:200/folder/subfolder/etc

  • category:被启动的组件的附加信息

    CATEGORY_BROWSABLE:
    目标 Activity 允许本身通过 Web浏览器启动,以显示链接引用的数据,如图像或电子邮件。

    CATEGORY_LAUNCHER:
    该 Activity 是任务的初始 Activity,在系统的应用启动器中列出。

以上这些属性就可以定位要启动的应用组件

  • extra:携带额外键值对信息

    当intent的action设置为ACTION_SEND时, 用于发送电子邮件,可用 EXTRA_EMAIL 键指定“目标”收件人,用 EXTRA_SUBJECT 键指定“主题”

  • flags:如何启动activity

    FLAG_ACTIVITY_CLEAR_TASK
    该用该flag构成的Intent启动应用时,被启动的Activity所在的栈被清空,事实上该Activity就会位于栈底

    FLAG_ACTIVITY_CLEAR_TOP
    如果栈中存在此Activity则清空该Activity到栈顶活动,事实上他成为栈顶

2、 应用选择器

当有多个组件匹配时的默认情况

// Create the text message with a string
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage);
sendIntent.setType("text/plain");

// Verify that the intent will resolve to an activity
if (sendIntent.resolveActivity(getPackageManager()) != null) {
    startActivity(sendIntent);
}

默认

使用选择器时

// Create intent to show the chooser dialog
Intent chooser = Intent.createChooser(sendIntent, title);

// Verify the original intent will resolve to at least one activity
if (sendIntent.resolveActivity(getPackageManager()) != null) {
    startActivity(chooser);
}

有选择器时

3、PendingIntent的作用

  • NotificationManager执行Intent
  • 主屏幕应用执行Intent
  • 未来某一时间要执行的Intent,AlarmManager

推荐阅读:Intent参数详解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值