【发布时间】:2011-11-16 15:15:16
【问题描述】:
我们都知道如何在 AndroidManifest.xml 中使用意图过滤器来声明活动的功能,例如搜索、推送等。我目前使用这样的意图过滤器以以下方式注册自定义 URL 方案:
<activity android:name="NameOfActivity" >
<intent-filter >
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWABLE" />
<data
android:host=""
android:scheme="customscheme" />
</intent-filter>
</activity>
这一切都运作良好,直到我决定将所有活动转换为片段,因为我需要在表格上以不同的方式显示用户界面。现在,在声明为 large 或更大的设备上,我没有在活动之间切换,而是有一个活动可以根据要求删除和添加新片段。这个选择是因为屏幕的左侧总是显示相同的内容,所以我没有将这个内容添加到所有活动中,而是更改了片段。
这里的问题是,虽然意图过滤器在手机上启动了正确的 Activity,但绝不应该在平板电脑上启动此 Activity。相反,我想在片段中处理这个 URL。截至目前,我认为没有办法解决这个问题。一种想法是以编程方式添加意图过滤器,但经过一些研究,我无法确定这是否可能。另一个想法是以某种方式在片段上添加意图过滤器,但这不会起作用,因为片段无法在没有托管它的活动的情况下启动。
简而言之: 在手机上,我需要一个活动来处理意图过滤器,但在平板电脑上,我需要另一个活动来处理意图过滤器。
有没有办法做到这一点?
【问题讨论】:
标签: android android-manifest android-intent