记录可以快速记忆,加深理解,坚持下去。
activity的启动分为:显示启动和隐式启动
显示启动:明确的指定一个activity进行启动
隐式启动:只有合适的activity才可以启动
什么是合适?
当标签内的内容与Intent的设置相同时
intent.setAction("htl");
intent.addCategory("")
intent.setData(Uri.parse("https://www.baidu.com"));
有三种内容,如果进行设置,必须有 action, category
- action
- category:name=”android.intent.category.DEFAULT”时, intent不需要添加
- date
代码片段:manifest
<intent-filter>
<action android:name="htl"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="cc" android:mimeType="text/fds"/>
或
<data android:scheme="cc"/>
<data android:mimeType="text/fds"/>
</intent-filter>
标签可以配置一下内容:scheme://host:port/intent/a.html
- android:scheme
用于指定数据的协议部分。如:https。如果没有指定,URL无效。
- android:host
用于指定数据的主机名部分。如:www.baidu.com。如果没有指定,URL无效。
- android:port
用于指定数据的端口部分,一般紧随在主机名之后。
- android: path、pathPattern 和 pathPrefix
用于指定主机名和端口之后的部分,如一段网址中跟在域名之后的内容。这三个参数都是表示路径信息。
path: 表示匹配完整的路径 /intent/a.html ,只有与 path 完全相同才能匹配
pathPattern: 表示用表达式匹配完整的路径,但与 path 相比,它里面可以包含通配符和转义符
通配符号:
- ‘’表示0个或者多个任意字符。如:‘a’,可以匹配为‘a’,’aa’,’aaa’;
- ‘.’表示任意字符 .如‘.’,可以匹配‘a’,’b’,’c’
转义符:
‘’写成 ‘\’
‘*’写成 ‘\\’
pathPrefix: 表示匹配路径的前缀信息。/intent
5. android:mimeType
用于指定可以处理的数据类型,允许使用通配符的方式进行指定。
一般只需要指定scheme的内容就可以了。
当还需要添加mineType(传递的数据类型)内容时,如果
intent.setData(Uri.parse("cc:10086"));
intent.setType("text/fds");
启动失败,无论setDate()还是setType()在前,后面的都会清理掉前面的设置,所以,正确的启动方式是
intent.setDataAndType(Uri.parse("cc:10086"),"text/fds");
当等待启动的activity有多个action,多个data时,只需要同时满足一条action和data就可以正常启动.
Intent 中设置的 category 必须全部在 intent-filter 中包含,但可以不设置category.
//可以得到指定的数据
Intent intent = getIntent();
intent.getScheme();
Uri uri = intent.getData();
uri.getPath();
uri.getQuery();