在Android主屏幕中弹出对话框

时间:2011-09-29 02:04:52

标签: android dialog

是否可以通过服务在Android设备的主屏幕中显示弹出对话框(AlertDialog)?

4 个答案:

答案 0 :(得分:13)

您可以使用Activity主题创建Theme.Dialog。在您的AndroidManifest.xml文件中,将主题添加到活动中,如下所示:

<activity android:name=".DialogActivity" android:theme="@android:style/Theme.Dialog"></activity>

从您的服务中启动此Activity。您必须使用Intent.FLAG_ACTIVITY_NEW_TASK标志启动活动。见How to start an Activity from a Service

答案 1 :(得分:4)

当广播接收器或服务中的弹出活动时,是否有人需要选项“android:launchMode =”singleInstance“? 如果没有此选项,我的应用程序会自动启动并在其上方弹出MyDialogActivity。 然后,事情发生了错误。 (我的应用程序具有自动登录功能的主要活动。当其他新活动自动启动时,MyDialogActivity被隐藏。)

所以,这是我的示例xml代码。

    <activity
        android:name=".MyDialogActivity"
        android:launchMode="singleInstance"
        android:screenOrientation="portrait"
        android:theme="@android:style/Theme.Dialog" />
    <activity

我希望有人需要我的意见。 :)

答案 2 :(得分:2)

您无法从服务创建对话框,但我们有一个替代解决方案是您可以创建dialog activity并从您的服务启动该活动

您可以通过以下方式将活动主题设置为对话

<activity android:name=".MyDialogActivity" android:theme="@android:style/Theme.Dialog"
        android:label="@string/app_name">
</activity>

答案 3 :(得分:0)

创建 CustomDialog 作为活动

添加到清单

<activity android:name=".view.activity.CustomDialog"
        android:launchMode="singleInstance"
        android:screenOrientation="fullSensor"
        android:theme="@style/AlertDialogTheme"
        />

将Style AlertDialogTheme添加到style.xml

<style name="AlertDialogTheme" parent="Theme.MaterialComponents.Light.Dialog.Alert.Bridge">

</style>