我们都知道如何在AndroidManifest.xml中使用 Intent 过滤器来声明 Activity 的功能,例如搜索,推送等。我目前使用这种 Intent 过滤器以以下方式注册自定义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>

在我决定将所有 Activity 转换成 fragment 之前,这一切都非常有效,因为我需要在表上以不同的方式显示用户界面。现在,在声明为更大或更大的设备上,我没有一个 Activity 在一个 Activity 之间切换,而是有一个 Activity 可以根据请求删除和添加新的 fragment 。之所以选择此选项,是因为屏幕的左侧始终显示相同的内容,因此,不添加此内容,而是改为更改所有 Activity ,而不是添加所有 Activity 。

这里的问题是,尽管 Intent 过滤器在电话上启动了正确的 Activity ,但永远不应在平板电脑上启动该 Activity 。相反,我想在 fragment 中处理此URL。到目前为止,我看不到解决此问题的方法。一种想法是以编程方式添加 Intent 过滤器,但是经过一些研究,我无法弄清楚这是否可行。另一个想法是要以某种方式在 fragment 上添加 Intent 过滤器,但这将无法正常工作,因为如果没有托管该 fragment 的 Activity 就无法启动该 fragment 。

简称:
在电话上,我需要一个 Activity 来处理 Intent 过滤器,但是在平板电脑上,我需要另一个 Activity 来处理 Intent 过滤器。

有什么办法可以做到这一点?

最佳答案

不能让intent-filter Activity 确定设备的分辨率,然后为此启动适当的 Activity 吗?

另外,我认为Fragments的设计考虑了您的情况:描述用户界面的各个方面,然后根据屏幕分辨率显示全部或部分功能。

http://developer.android.com/guide/topics/fundamentals/fragments.html

10-07 19:26
查看更多