Intent详解(四):使用隐式Intent

来源:互联网 发布:陕西大数据集团胡刚 编辑:程序博客网 时间:2024/05/17 01:05

《Intent详解(一):显式Intent》
《Intent详解(二):隐式Intent》
《Intent详解(三):Intent的Flags》
《Intent详解(四):使用隐式Intent》

如果某个功能我们的应用不支持,但是我们其他的应用可以,我们就可以使用隐式Intent来选择其他应用的组件来实现这以功能,例如下面的代码:

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

上面的方法中创建了一个Intent,其action为Intent.ACTION_SEND,然后携带了一个文本信息,其mimeType为”text/plain”,这是其典型的隐式Intent,当我们调用这个方法后的效果如下所示:

这里写图片描述

系统会弹出一个应用选择器,其中的所有应用都是们上面intent匹配出来的,我们可以调用这里所有的应用来处理我们的文本msg。

上面的方式中如果我们勾选了下方的单选按钮然后在选择某个应用来处理我们的文本,那么之后每次我们要处理文本都会使用这个应用,就不会再弹出这个界面了。

那么如果用户需要每次处理文本都使用不同的应用,那么我们可以使用下面的方式来创建Intent:

public void sendText(String msg) {        Intent intent = new Intent();        intent.setAction(Intent.ACTION_SEND);        intent.putExtra(intent.EXTRA_TEXT, msg);        intent.setType("text/plain");        Intent chooser = Intent.createChooser(intent, msg);        if(intent.resolveActivity(getPackageManager()) != null) {            startActivity(chooser);        }    }

要显示选择器,需要使用createChooser()创建Intent,并将其传递给startActivity即可,其中createChooser的第二个参数是选择器的标题文本。运行上面的代码效果如下:

这里写图片描述

类似的我们还可以启动系统中其他类型的Activity,例如播放视频、浏览网页、查看图片等等,只要我们创建具适当匹配条件的隐式Intent,系统就会把这些应用以选择器的形式展示出来,供我们使用。

关于更多的匹配条件及Flags可以查看官方文档

1 0