And*_*Guy 9 android host intentfilter android-manifest
需要有关manifest中指定的intent-filter标记的更多信息.我知道我们可以用两种形式指定数据:
<intent-filter>
<data android:host="com.myHost" android:scheme="content"/>
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
AND:
<intent-filter>
<data android:scheme="content"/>
<data android:host="com.myHost"/>
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
但我想知道可以存在几种组合,比如
<intent-filter>
<data android:host="com.myHost" android:scheme="content"/>
<data android:scheme="content"/>
<data android:host="com.myHost1"/>
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
要么:
<intent-filter>
<data android:host="com.myHost" android:scheme="content"/>
<data android:scheme="content"/>
<data android:host="com.myHost1"/>
<data android:scheme="content"/>
<data android:host="com.myHost2"/>
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
在最后一种情况下,我首先想知道这是否存在以及如何确定哪个主机用于哪个方案,因为包含方案和主机的数据标签可以按任何顺序出现.
请帮忙.
Com*_*are 11
我知道我们可以用两种形式指定数据
不要content用于计划,除非你真的意味着你正在创建一个支持a的活动ContentProvider.
但我想知道可以存在多种组合
如果您的过滤器只有一个属性<data>,那么您肯定可以拥有不同的值,例如来自"联系人"应用中的值:
<activity
android:name=".activities.ShowOrCreateActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar">
<intent-filter>
<action android:name="com.android.contacts.action.SHOW_OR_CREATE_CONTACT" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="mailto" />
<data android:scheme="tel" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
此外,一个部件可以具有多个<intent-filter>元素,其中的每一个在逻辑上与其他(任何逻辑或运算Intent匹配的任何过滤器是组件的匹配).因此,对于更复杂的场景,每个<data>元素有2个以上的属性,我倾向于将它们放在单独的<intent-filter>元素中.
如何确定哪个主机用于哪个方案
任何比赛都被认为是好的.你会检查Intent自己,以了解它包含的内容.
补充@CommonsWare 的答案,<data>如果您不是那么具体,则似乎不能使用两个标签。
A)在我的一个应用程序中,我可以拥有:
<data android:scheme="myAppScheme1"/>
Run Code Online (Sandbox Code Playgroud)
乐队
<data android:scheme="myAppScheme2" android:host="host2"/>
Run Code Online (Sandbox Code Playgroud)
C) 但以下将忽略第一个标签(使用myAppScheme1://whateverURI 不起作用):
<data android:scheme="myAppScheme1"/>
<data android:scheme="myAppScheme2" android:host="host2"/>
Run Code Online (Sandbox Code Playgroud)
D)但是,如果我补充第一个方案,它将适用于两个 URIS:
<data android:scheme="myAppScheme1" android:host="host1"/>
<data android:scheme="myAppScheme2" android:host="host2"/>
Run Code Online (Sandbox Code Playgroud)
可能如果你真的需要C),你最好创建两个意图过滤器
| 归档时间: |
|
| 查看次数: |
11760 次 |
| 最近记录: |