首页 理论教育 隐式Intent的3.5个示例

隐式Intent的3.5个示例

时间:2023-06-28 理论教育 版权反馈
【摘要】:如果当前的应用无法执行某项操作,而用户使用的设备上其他应用可以,且希望用户选取要使用的应用,那就可以使用隐式Intent。如果结果为空,则不应使用该Intent。如有可能,应停用发出该Intent的功能。在App Inventor 2的信息分享器组件的源码文件Sharing.java中,有如下代码:上述代码没有使用URI,但声明了Intent的数据类型,用于指定Extra携带的内容。如果只有一个应用能够处理,则该应用将立即运行并为其处理Intent。

隐式Intent的3.5个示例

如果当前的应用无法执行某项操作,而用户使用的设备上其他应用可以,且希望用户选取要使用的应用,那就可以使用隐式Intent。

例如,如果希望用户与他人分享内容,可以使用ACTION_SEND操作创建Intent,并添加指定共享内容的Extra。使用该Intent调用startActivity()时,用户可以选取分享内容所使用的应用。

注意:用户设备上可能没有任何应用能够处理当前应用发送到startActivity()的隐式Intent。如果出现这种情况,则调用将会失败,且应用会崩溃

要验证Activity是否会接收Intent,需要对Intent对象调用resolveActivity()。如果结果为非空,则至少有一个应用能够处理该Intent,且可以安全调用startActivity()。如果结果为空,则不应使用该Intent。如有可能,应停用发出该Intent的功能。

在App Inventor 2的联系人选择框组件的源码文件ContactPicker.java中,有如下代码:

978-7-111-59828-2-Chapter03-3.jpg

其中就使用了resolveActivity()函数判断是否有应用能处理Intent。

在App Inventor 2的信息分享器组件的源码文件Sharing.java中,有如下代码:

978-7-111-59828-2-Chapter03-4.jpg(www.xing528.com)

978-7-111-59828-2-Chapter03-5.jpg

上述代码没有使用URI,但声明了Intent的数据类型,用于指定Extra携带的内容。

调用startActivity()时,系统将检查已安装的所有应用,确定哪些应用能够处理这种Intent。

如果只有一个应用能够处理,则该应用将立即运行并为其处理Intent。如果有多个应用能够处理Intent,则系统将显示一个对话框,使用户能够选取要使用的应用。如图3-2所示。

978-7-111-59828-2-Chapter03-6.jpg

图3-2 分享应用选择界面

用户还可以将选择的应用设置为该操作的默认选项,如果用户可能希望今后一直使用相同的应用执行某项操作(例如,打开网页时,用户往往倾向于仅使用一种网络浏览器),则这一点十分有用。

如果用户希望每次使用不同的应用,则应采用显式方式显示选择器对话框。选择器对话框每次都会要求用户选择执行操作的应用。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈