activity启动方式

记录可以快速记忆,加深理解,坚持下去。

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();

猜你喜欢

转载自blog.csdn.net/qq_34987553/article/details/54949477
今日推荐