片段和意图过滤器

Ben*_*dik 5 android android-manifest android-intent

我们都知道如何在 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>
Run Code Online (Sandbox Code Playgroud)

这一切都非常有效,直到我决定将所有活动转换为片段,因为我需要在表格上以不同的方式显示用户界面。现在,在声明为或更大的设备上,我没有在活动之间切换,而是根据要求删除和添加新片段。这个选择是因为屏幕的左侧总是显示相同的内容,所以我没有将此内容添加到所有活动中,而是更改了片段。

这里的问题是,虽然意图过滤器在手机上启动了正确的活动,但这个活动不应该在平板电脑上启动。相反,我想在片段中处理这个 URL。截至目前,我认为没有办法解决这个问题。一个想法是以编程方式添加意图过滤器,但经过一些研究,我无法弄清楚这是否可行。另一个想法是以某种方式在片段上添加意图过滤器,但这将不起作用,因为如果没有托管它的活动,片段将无法启动。

简而言之:在手机上,我需要一个活动来处理意图过滤器,但在平板电脑上,我需要另一个活动来处理意图过滤器。

有没有办法做到这一点?

Ben*_*dik 1

一个月过去了,我还没有找到解决办法。据了解,该活动是在其他一切之上启动的。它破坏了整个流程,并且是一个非常糟糕的解决方法,但至少它有效。排除该功能是不行的,因此这是唯一的解决方案。我真的很高兴看到更好的解决方案,但据我所知,这似乎根本不可能。