Всплывающее диалоговое окно на главном экране Android
Можно ли показывать всплывающее диалоговое окно (AlertDialog) на главном экране на устройстве Android через службы?
3 ответа
Вы могли бы создать Activity
с Theme.Dialog
тема. В вашем AndroidManifest.xml
файл добавить тему в упражнение, например так:
<activity android:name=".DialogActivity" android:theme="@android:style/Theme.Dialog"></activity>
С вашего сервиса просто начните это Activity
, Вы должны будете начать деятельность с Intent.FLAG_ACTIVITY_NEW_TASK
флаг. См. Как начать действие с сервиса
Кому-нибудь нужна опция "android:launchMode="singleInstance", когда всплывающая активность в вещательном приемнике или службе? Без этой опции мое приложение запустилось автоматически и показало над ним MyDialogActivity. А затем что-то случилось не так. (Мое приложение имеет Основное действие с функцией автоматического входа в систему. Когда другое новое действие запускается автоматически, 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>
Создать 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>