安卓学习之Intent

Intent的学习可以查看官方文档学习https://developer.android.google.cn/guide/components/intents-filters

这篇文章便是对官方文档的一些总结。

Intent

intent(意图),是用来沟通不同组件进行使用的一个消息传递对象,它主要有以下的用法:

  • 启动Activity
  • 启动服务
  • 传递广播

Intent两种类型

1.显示意图:

显示意图明确指出组件的名称,通常情况下,你应该会在自己的程序下使用

显示意图,因为你知道自己的Activity的名称。

2.隐式意图

不会明确指定,例如你需要一个可以打开pdf的软件,那么你应该选择合适的过滤器来

进行选择。

使用隐式意图的时候,如果存在多个应用符合你的要求,那么就会列出一个对话框,

你可以选择打开的引用。

构建Intent

Intent主要包含的内容如下:

1.组件名称

如果存在组件名称,那么这就是显示意图的一项重要因素。

2.操作(action)

指定要执行的通用操作,例如你选择打开pdf文件时出来很多应用,那么它们可能都指定了这种功能的Action。

Action的设置在AndroidManifest.xml文件中。

需要注意的是,你可以使用自己命名的action,但是这并不是最好的选择,你应该使用Intent这个

框架之下的常见操作:

您可以使用setAction()来选择需要的操作。如果需要定义自己的操作,需要加入应用的软件包作为前缀。

3.数据

引用代操作或操作数据的MIME类型的URL.

MIME类型不懂可以看这里https://baike.baidu.com/item/MIME/2900607?fr=aladdin

可以使用setData设置数据url,setType设置mime类型。

4.类别

通常情况下不需要类别,下面介绍两个类别

CATEGORY_BROWSABLE

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

CATEGORY_LAUNCHER

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

下面看看隐式意图的操作:

Intent intent = new Intent();
        intent.setAction(Intent.ACTION_SEND);
        intent.setType("text/plain");
        intent.putExtra(Intent.EXTRA_TEXT, "hello00");
        if (intent.resolveActivity(getPackageManager()) != null) {
            startActivity(intent);
        }

上面的代码需要说明的就是最后一句代码,如果不存在你找的应用,会抛出异常

,那么我们可以使用intent.resolveActivity(getPackgeManager)来防止这种操作。

强制使用应用选择器

通常情况下,可能存在多个应用响应intent,那么我们可以生成对话框供用户选择

想要选择的应用。

String titli="Text";
        Intent chooser=Intent.createChooser(intent,titli);//获得一个标题
        if (chooser.resolveActivity(getPackageManager()) != null) {
            startActivity(chooser);
        }

接受隐式intent

注意:要接收intent,必须将 CATEGORY_DEFAULT 类别包括在 Intent 过滤器中,

startActivity和startActivityForResult会根据这些内容解析intent。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值