【发布时间】:2020-11-16 13:09:53
【问题描述】:
我想在应用程序处于终止状态并且BroadcastReceiver 收到任何操作时显示对话框/弹出窗口。
MyReceiver.java
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
MyDialog.showDialog(context);
}
}
我在清单中添加了权限。
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
我在前台活动时遇到异常
原因:java.lang.IllegalStateException:您需要在此活动中使用 Theme.AppCompat 主题(或后代)。
style.xml
<style name="AppTheme" parent="Theme.AppCompat.Light">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
我的对话框未显示在活动终止状态,但调用了接收器。
【问题讨论】:
-
在您进一步思考之前。看看This answer。如果您仍然想进行对话,那么This answer 会有所帮助。Thx
-
我试过了,但是对话框没有显示在前台和杀死状态。
-
如果您阅读了第一个链接,因为它说它违反了 Android 设计和 UI 准则,那么您为什么不使用带有对话框主题的通知或活动。如果您的应用遵循指南并且不要通过屏幕上的随机弹出窗口来激怒用户,那就更好了。
-
假设您正在为客户制作一个应用程序并且您必须实现这些类型的东西然后您告诉他们
it goes against Android design and UI guidelines。 -
是的,为什么不呢。由技术制定的用户体验指南,而不是客户。再见
标签: android broadcastreceiver android-alertdialog