在Android主屏幕上弹出对话框

6

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

4个回答

14

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

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

从您的服务中启动这个Activity。您将不得不使用Intent.FLAG_ACTIVITY_NEW_TASK标志来启动该活动。请参见如何从服务启动活动


Aki,Dallas:我已经使用了Theme.Dialog并且成功地运行了。谢谢你,但是我有一个问题,如何在按钮点击时移除这个对话框? - Kushal Shah
在按钮的onclick监听器中调用finish()函数。 - Arnab Chakraborty

4

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

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

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

我希望有人需要我的评论。 :)

1
我在互联网上跌跌撞撞地摸索了几个小时,设置launchMode有所帮助,谢谢。 - Dino Tw

2

您不能从服务中创建对话框,但我们有一个替代方案是:您可以创建 dialog activity 并从您的服务启动该活动。

以下是设置活动主题为对话框的方法:

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

0
创建一个继承自Activity的CustomDialog。
将其添加到manifest文件中。
<activity android:name=".view.activity.CustomDialog"
        android:launchMode="singleInstance"
        android:screenOrientation="fullSensor"
        android:theme="@style/AlertDialogTheme"
        />

在style.xml中添加AlertDialogTheme样式

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

</style>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接