pra*_*ago 7 android deep-linking intentfilter android-manifest android-activity
我坚持以下方案.我在中定义了以下深层链接意图过滤器AndroidManifest.xml
预期的行为是当我找到格式的URL http://?www.domain.com/a/blabla或者在SMS/eMail格式中存在链接时,domain/xyz系统应该触发我的活动.
案例#1:工作正常
<activity
android:name=".MYActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="xyz"
android:scheme="domain" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
案例#2:工作正常
<activity
android:name=".MYActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="http"
android:host="www.domain.com"
android:pathPrefix="/a"
/>
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
案例#3:不工作
<activity
android:name=".MYActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="xyz"
android:scheme="domain" />
<data
android:scheme="http"
android:host="www.domain.com"
android:pathPrefix="/a"
/>
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
任何建议/要点/帮助真的很感激
TWi*_*Rob 10
请参阅以下文档<data>:它说明:
<data>同一元素中包含的所有元素<intent-filter>都对同一过滤器有贡献.
于是
<intent-filter>
<data
android:host="xyz"
android:scheme="domain" />
<data
android:scheme="http"
android:host="www.domain.com"
android:pathPrefix="/a" />
<intent-filter>
Run Code Online (Sandbox Code Playgroud)
被等同地解释为(不是真正的代码)
<intent-filter>
<data
android:host="xyz"
android:scheme="domain"
android:scheme="http"
android:host="www.domain.com"
android:pathPrefix="/a" />
<intent-filter>
Run Code Online (Sandbox Code Playgroud)
这显然有一些矛盾,例如主机是xyzVS www.domain.com.
来自Android官方文档网站:
尽管可以在同一个过滤器中包含多个元素,但当您打算声明唯一的 URL(例如方案和主机的特定组合)时,创建单独的过滤器很重要,因为同一意图过滤器中的多个元素实际上是合并的一起考虑其组合属性的所有变化。
您必须创建单独的intent-filters。