旧版API的FLAG_ACTIVITY_NEW_DOCUMENT是否有类似内容?

时间:2015-10-05 04:24:07

标签: android android-layout android-intent android-activity

我有几个活动旨在看起来像对话框一样(但由于小部件的限制,实际上可能不是对话框)。这些活动使用Theme.Dialog主题的扩展在屏幕上显示为弹出窗口,而不会填满整个屏幕。

我的目标是他们将模仿对话框的外观,以便他们能够在屏幕上显示的内容之上显示,屏幕上的所有内容仍然显示在对话框后面。

在API 21中,我可以在我的意图中使用FLAG_ACTIVITY_NEW_DOCUMENT使活动完成此操作。但是,我的应用程序支持API 16的最低价格。我已尝试过其他几个标志,但除了NEW_DOCUMENT之外,其他任何标志都没有给我正确的外观。所有其他人最终在对话框活动后面打开我的实际应用程序,然后在我的活动完成后将其打开()。不是一个破坏者,但并不理想。

我是否有任何技巧可以让我的设计保持向后兼容?

1 个答案:

答案 0 :(得分:1)

通过使用ACTIVITY_CLEAR_TASK和NEW_TASK,我能够非常接近。这确保关闭我的活动的任何现有任务并创建新任务,确保我的应用程序不会在后台显示。

不幸的是,这带来了消除我的用户当前状态的恼人的副作用,但考虑到我将其用于小部件(他们已经在主屏幕上),我怀疑它会是那样的冲击力。

尽管如此,我还是在构建版本的检查中包含了intent标志设置,因此至少5.0+用户不会受到烦恼的影响:

    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
        pIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
    }
    else{
        pIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
    }