BroadcastReceiver的OnReceive函数中启动对话框

原创 2013年12月03日 13:46:25

处理怎样在接收广播后启动对话框用来提示用户,开始看到OnReceive存在context,因此new AlertDialog,但是在show时出错,怀疑是OnReceive中不能进行过长时间的操作,因此新开一个Thread去处理AlertDialog,但是还是会抛异常:

android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
总结三种方式如下:

1,启动一个Activity,背景设为透明,Activity中启动对话框。
2,将Activity本身通过主题设置样式为对话框的,将Activity显示为对话框模式:

android:theme="@android:style/Theme.Dialog"
这2种方法要维护Activity,结束后finish掉Activity,并在启动Intent时需要加上Intent.FLAG_ACTIVITY_NEW_TASK标志。
3,参照系统关机提示对话框,实现“对话框”,代码如下:

wm = (WindowManager) getApplicationContext().getSystemService("window");
WindowManager.LayoutParams para = new WindowManager.LayoutParams();
para.height = -1;
para.width = -1;
para.format = 1;
/* wmParams.type=LayoutParams.TYPE_PHONE;   //设置window type
wmParams.format=PixelFormat.RGBA_8888;   //设置图片格式,效果为背景透明
wmParams.gravity=Gravity.LEFT|Gravity.TOP;   //调整悬浮窗口至左上角,便于调整坐标*/
para.flags = LayoutParams.FLAG_FULLSCREEN | LayoutParams.FLAG_LAYOUT_IN_SCREEN;
para.type = LayoutParams.TYPE_SYSTEM_ALERT;
mView = LayoutInflater.from(context).inflate(R.layout.layout_dialog, null);
wm.addView(mView, para);



在BrodcastReceiver和Service内启动Activit和弹出dialog需要注意的地方

启动Activity源码:(记得要加上Intent.FLAG_ACTIVITY_NEW_TASK) Intent intent = new Intent(); intent.setFlags(I...

安卓多语言设置

最近做的项目中使用到了多语言切换功能。那么多语言切换首先要注意的是,在xml文件中和代码当中,所有使用文本字符串的地方,确保所使用的string文本是从values文件夹下的string.xml中获取...
  • forrey
  • forrey
  • 2015年03月23日 00:06
  • 1971

Android 监听 home键和菜单键

Android 监听 home键和菜单键

BroadcastReceiver广播接收者(五)——onReceive()中的耗时任务以及短信窃听

MainActivity如下: package cc.vv; import android.os.Bundle; import android.app.Activity; import android...
  • lfdfhl
  • lfdfhl
  • 2014年09月02日 20:58
  • 1550

用CSocket基于UDP协议进行网络通信过程中OnReceive函数无法响应消息的一个原因

在用CSocket类进行网络通信过程中,我们需要派生出一个子类这里我们用DSocket才可以进行通信,利用DSocket声明对象,创建套接字,在DSocket类中需要重载CSocket类中的OnRec...

onReceive中完成一项比较耗时的工作 , 应该启动 Service 来完成 ,不能使用子线程来解决!!!

Android 中的BroadCastReceiver                                                 作者:阿福       BroadCa...

BroadcastReceiver类中调用activity的函数

最近在做一个有关android推送的东西,里面要实现在BroadcastReceiver

Broadcast的onReceive方法中弹出AlertDialog

问题阐述根据《第一行代码》中使用广播做一个强制下线的功能。在任何一个界面上点击button,就发送强制下线的广播。同时程序使用静态注册广播接收器,接收器中会弹出一个对话框,让用户无法进行任何其他操作,...

使用PendingIntent.getBrocast() 在 onReceive 中接受不到intent 的问题

今天在service 中使用了 PendingIntent.getBrocast()这个方法去发送一个广播,然后在onReceiver中接受并获取intent中的数据。之前是这样写的(没有注释的部分)...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:BroadcastReceiver的OnReceive函数中启动对话框
举报原因:
原因补充:

(最多只允许输入30个字)