是否可以通过服务在Android设备的主屏幕中显示弹出对话框(AlertDialog)?
答案 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>