Android Studio教程10-Intent的详细使用
程序员文章站
2022-11-21 20:55:13
[TOC] 1. Intent启动器 1.1. Intent的用途 1. 启动Activity :希望返回结果 2. 启动服务 启动一个不适用用户界面而在后台执行操作的组件 :下载文件等,可携带任何必要的数据 : 使用客户端 服务器接口,从其他组件绑定到此服务 3. 传递广播 广播是任何应用均可接收 ......
目录
1. intent启动器
1.1. intent的用途
1. 启动activity
startactivity()
-
startactivityforresult()
:希望返回结果2. 启动服务
启动一个不适用用户界面而在后台执行操作的组件
-
startservice()
:下载文件等,可携带任何必要的数据
bindservice()
: 使用客户端-服务器接口,从其他组件绑定到此服务
3. 传递广播
广播是任何应用均可接收的消息。系统将针对系统事件(例如:系统启动或设备开始充电时)传递各种广播
sendbroadcast()
sendorderedbroadcast()
sendstickybroadcast()
1.2. intent类型
1.显示intent
按名称(完全限定类名)指定要启动的组件
- 系统将立即启动 intent 对象中指定的应用组件
// executed in an activity, so 'this' is the context // the fileurl is a string url, such as "http://www.example.com/image.png" intent downloadintent = new intent(this, downloadservice.class); downloadintent.setdata(uri.parse(fileurl)); startservice(downloadintent);
2.隐式intent
不会指定特定的组件,而是声明要执行的常规操作,从而允许其他应用中的组件来处理它。
- android 系统通过将 intent 的内容与在设备上其他应用的清单文件中声明的 intent 过滤器进行比较,从而找到要启动的相应组件。 如果 intent 与 intent 过滤器匹配,则系统将启动该组件,并向其传递 intent 对象。 如果多个 intent 过滤器兼容,则系统会显示一个对话框,支持用户选取要使用的应用。
- intent 过滤器是应用清单文件中的一个表达式,它指定该组件要接收的 intent 类型。
// 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); }
2. 构建intent
intent包含的主要信息如下:
- 组件名称-用于显示intent
- 操作:指定用于执行的通用操作-用于隐式intent
action_view
action_send
- 数据
- 类别:
- extra: putextra()
- 标志
3. 隐式intent
<activity android:name="mainactivity"> <!-- this activity is the main entry, should appear in app launcher --> <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> <activity android:name="shareactivity"> <!-- this activity handles "send" actions with text data --> <intent-filter> <action android:name="android.intent.action.send"/> <category android:name="android.intent.category.default"/> <data android:mimetype="text/plain"/> </intent-filter> <!-- this activity also handles "send" and "send_multiple" with media data --> <intent-filter> <action android:name="android.intent.action.send"/> <action android:name="android.intent.action.send_multiple"/> <category android:name="android.intent.category.default"/> <data android:mimetype="application/vnd.google.panorama360+jpg"/> <data android:mimetype="image/*"/> <data android:mimetype="video/*"/> </intent-filter> </activity>
-
第一个 activity mainactivity 是应用的主要入口点。当用户最初使用启动器图标启动应用时,该 activity 将打开:
- action_main 操作指示这是主要入口点,且不要求输入任何 intent 数据。
category_launcher 类别指示此 activity 的图标应放入系统的应用启动器。 如果
- action_main 操作指示这是主要入口点,且不要求输入任何 intent 数据。
第二个 activity shareactivity 旨在便于共享文本和媒体内容。 尽管用户可以通过从 mainactivity 导航进入此 activity,但也可以从发出隐式 intent(与两个 intent 过滤器之一匹配)的另一应用中直接进入 shareactivity
推荐阅读
-
详解Android Studio3.5及使用AndroidX的一些坑
-
浅析android studio3.5中使用recycleview的包
-
如何使用印象笔记·圈点的详细使用图文教程
-
android教程使用webview访问https的url处理sslerror示例
-
android教程之intent的action属性使用示例(intent发短信)
-
android开发教程之系统资源的使用方法 android资源文件
-
cad2014堆叠怎么用? cad堆叠的详细使用教程
-
Android studio配置copyright插入版权信息的详细教程
-
Android studio配置copyright插入版权信息的详细教程
-
Android studio怎么使用eclipse的快捷键?