通过服务在Android设备的主屏幕上显示弹出对话框(AlertDialog)是否可行?
您可以创建一个具有Theme.Dialog
主题的Activity
。在您的AndroidManifest.xml
文件中,将该主题添加到活动中,如下所示:
<activity android:name=".DialogActivity" android:theme="@android:style/Theme.Dialog"></activity>
从您的服务中启动这个Activity
。您将不得不使用Intent.FLAG_ACTIVITY_NEW_TASK
标志来启动该活动。请参见如何从服务启动活动
有人在广播接收器或服务(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
您不能从服务中创建对话框,但我们有一个替代方案是:您可以创建 dialog activity
并从您的服务启动该活动。
以下是设置活动主题为对话框的方法:
<activity android:name=".MyDialogActivity" android:theme="@android:style/Theme.Dialog"
android:label="@string/app_name">
</activity>
<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>