因为AlertDailog在显示时需要一个指定的Activity去依附
AlertDialog.Builder builder = new Builder(MainActivity.this);
当从BroadcastReceiver这类的元素中生成AlertDailog时,不一定有明确的Activity提供给我们
如下解决方案:
AlertDialog.Builder builder = new Builder(context);
alert.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
然后在manifest里面注册权限
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"></uses-permission>
原理其实就是依附于系统上,直接在任何地方情况下都能弹这个Dailog.
本文介绍如何在没有明确Activity的情况下实现AlertDialog弹窗,通过设置特定类型并申请系统权限,使得BroadcastReceiver等组件也能调用系统级对话框。
6209

被折叠的 条评论
为什么被折叠?



