Android 在广播接收器中弹出对话框

特别需要注意的几点如下:

  1. 需要设置AlertDialog的类型

      WindowManager.LayoutParams.TYPE_SYSTEM_ALERT

2. 需要声明Window弹框的权限

<user-permission android:name="android.premission.SYSTEM_ALERT_WINDOW" />

  3. 在点击AlertDialog的按钮时,如果利用Intent进行页面跳转,需要给Intent加入FLAG_ACTIVITY_NEW_TASK的标志

接收器中 关键代码如下:

 1 public class ForceOfflineReceiver extends BroadcastReceiver{
 2     @Override
 3     public void onReceive(final Context context, Intent intent) {
 4
 5         AlertDialog.Builder dialogBuilder =  new AlertDialog.Builder(context);
 6         dialogBuilder.setTitle("下线通知");
 7         dialogBuilder.setMessage("你的账户在其他地方登录 Over");
 8         dialogBuilder.setCancelable(false);
 9         dialogBuilder.setPositiveButton("重新登录",
10                 new DialogInterface.OnClickListener() {
11                     @Override
12                     public void onClick(DialogInterface dialog, int which) {
13                         ActivityCollector.finishAll();//摧毁所有活动
14                         Intent intent1 = new Intent(context, LoginActivity.class);
15                         //在广播接受者中启动活动需要添加FLAG_ACTIVITY_NEW_TASK标志
16                         intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
17                         context.startActivity(intent1);
18                     }
19                 });
20         AlertDialog alertDialog = dialogBuilder.create();
21         alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
22         alertDialog.show();
23     }
24 }
时间: 2024-08-26 03:58:50

Android 在广播接收器中弹出对话框的相关文章

Android中弹出对话框,AlertDialog关键代码

写在这里便于以后查看. Android中弹出对话框的关键代码: 1 btn01.setOnClickListener(new OnClickListener() { 2 3 @Override 4 public void onClick(View v) { 5 Toast.makeText(musicActivity.this, "tanchu", 100).show(); 6 //以下是弹出对话框的关键代码, 7 AlertDialog.Builder b = new AlertDi

在服务程序中弹出对话框

最近一个项目中,客户一定要在服务程序中弹出对话框.跟客户好说歹说,说我们已经记了Log,弹对话框没有意义,反而可能由于弹框后没有人管,造成程序停滞在那里的情况.但是,客户不管这些,就要弹对话框. 没辙,弹吧,弹个框还能多费事?没想到,还真挺费事.WinXP和Windows2003下问题不大,上网找找方法,框就弹出来了.但是,Vista和Windows2008下,这个框死活弹不出来. 先说说在WinXP和Windows2003下用的方法. 第一种方法是在服务进程中启动一个子进程.用该子进程弹出对话

Swing中弹出对话框的几种方式_JOptionPane.showMessageDialog等详解

Swing中弹出对话框的几种方式_JOptionPane.showMessageDialog等详解 在swing中,基于业务的考量,会有对话框来限制用户的行为及对用户的动作进行提示. Swing中提供了JOptionPane类来实现类似Windows平台下的MessageBox的功能,同样在Java中也有,利用JOptionPane类中的各个static方法 来生成各种标准的对话框,实现显示出信息.提出问题.警告.用户输入参数等功能.这些对话框都是模式对话框. ConfirmDialog ---

android 开发点击弹出对话框中的按钮进行页面跳转如何实现

android开发中,点击弹出对话框中的按钮进行页面跳转,如何实现?可以这样做: 可以获取对话框的点击事件,比如点击了确定然后你就跳转 AlertDialog.Builder builder = new Builder(CommentActivity.this); builder.setMessage("确定要跳转吗?"); builder.setTitle("提示"); builder.setPositiveButton("确认", new a

android在广播接收器BroadcastReceiver里面再进行发送广播,造成当前广播接收器不断循环执行问题

最近在公司处理项目时,用到锁屏状态弹出activity进行提示,类似QQ消息弹屏提示的功能.当中用到了,假如该弹出activity已经位于锁屏界面外时,将不进行再次弹窗,而是发送广播进行通知数据更新,但是在广播接收器里面的某个步骤进行了再次发送通知的操作,发现该广播接收器变成了一个死循环的执行.经过仔细检查,发现没有任何一处用错action.  最终将该广播接收器里面的发送广播语句注释,死循环不在.代码如下: 注:里面的所有action都经过仔细检查,使用均正确,没任何错误,或者引用错误. pa

怎么在InfoPath Web浏览器表单中弹出对话框?

在启用浏览器兼容模式的InfoPath表单是不能直接使用类似ASP.NET那种方式弹出对话框的, 那么我们是不是就不能弹出对话框了呢? 答案当然不是. 我们都知道XmlFormView控件是SharePoint中承载InfoPath表单页面显示的, 在查阅MSDN后, 我们发现可以为它增加一个"onnotifyhost"方法, 然后在事件中我们可以用代码注册JS弹出对话框. 这时候在表单可以调用就很简单了, this.NotifyHost("Msg") 即可. en

Android在Service中弹出对话框二

上一篇我也写了一篇弹窗的,但是经过测试,Android8.0之后用不了,所以改一下 GitHub传送门 Myservice.class package com.nf.service; import android.app.AlertDialog; import android.app.AliasActivity; import android.app.Dialog; import android.app.Service; import android.content.DialogInterfac

Android 在Service中弹出对话框

MyService.class public class MyService extends Service { public MyService() { } // 创建一个服务 @Override public void onCreate() { super.onCreate(); } // 服务启动 @Override public int onStartCommand(Intent intent, int flags, int startId) { Log.i("MyServer"

引用dll动态库,动态库中弹出对话框输入,将输入参数,作为变量继续调用。

在做支付项目时,引用动态库,动态库弹出支付宝或者微信的支付码,继而接收.最终将结果返回给调用动态库方法. 首先,动态库接收的是一个string 类型的xml,如 public string Pay(string inputxml){...},继而弹出一个form,可以在动态库项目中新增一个windows窗体项目 在窗体项目中,添加需要返回的支付码,即text需要返回给dll处理的条形码,窗口如下: 代码如下: public partial class ShowDialog : Form { pu