android模仿QQ锁屏状态弹框
来源:互联网 发布:淘宝什么牌子的t恤好 编辑:程序博客网 时间:2024/05/10 19:16
进过查询很多博主的文章来总结一下在锁屏状态下弹出消息对话框的问题
一,首先创建Activity进行Activity设置
public class Messagedialog extends Activity{protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final Window win = getWindow(); win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); setContentView(R.layout.dilog_xml);// 调用接口来实现显示的数据}
四个标志位顾名思义,分别是锁屏状态下显示,解锁,保持屏幕长亮,打开屏幕,xml文件不需要设置。
二,进行AndroidManifest.xml注册
<activity android:name=".boat.Messagedialog" android:launchMode="singleInstance" android:excludeFromRecents="true" android:taskAffinity="" android:theme="@android:style/Theme.Wallpaper.NoTitleBar">
其中的属性
android:excludeFromRecents="true"
当应用跳转到启动模式设置为singleInstance的Activity页面时,出现一段黑屏
android:excludeFromRecents="true"
这个属性的作用恰恰就是让你在长按home键的时候在弹出的应用列表中隐藏你的应用,达到隐藏应用程序进行的目的
三,在广播中激活弹窗
KeyguardManager km = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE); if (km.inKeyguardRestrictedInputMode()) { Intent alarmIntent = new Intent(context, Messagedialog.class); alarmIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(alarmIntent); }在你接收到广播中添加以以上代码,并跳转到了弹窗的Activity中,这里用到的是KeyguardManager类,用来管理锁屏,判断当前是否是锁屏状态,inKeyguardRestrictedInputMode()方法,如果为true,即为锁屏状态。在广播中启动Activity的context可能不是Activity对象,所以需要添加NEW_TASK的标志,否则启动时可能会报错。
四,创建一个列表对话框
String[] array = (String[])weidu.toArray(new String[weidu.size()]); builder1=new AlertDialog.Builder(Messagedialog.this).setTitle("消息提示").setItems(array, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog,int which) {Messagedialog.this.finish();Intent intent = new Intent(Messagedialog.this,XiaoxiActivity.class);startActivity(intent);}}).setNegativeButton("忽略",new DialogInterface.OnClickListener(){@Overridepublic void onClick(DialogInterface arg0, int arg1) {// TODO Auto-generated method stubMessagedialog.this.finish();}}).show();将你需要显示的数据放入到列表对话框中进行显示,这有一个问题,我还没有弄明白,就是如何现在消息的时时更新显示,可以参考http://blog.csdn.net/maosidiaoxian/article/details/40587935这位博主大哥的文章大家来研究
五,如何再次唤醒屏幕
@Overrideprotected void onPause() {// TODO Auto-generated method stub//builder1.dismiss(); PowerManager pm = (PowerManager) this.getSystemService(Context.POWER_SERVICE); if (!pm.isScreenOn()) { PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "bright"); wl.acquire(); wl.release(); } // getXiaoxidata("1", ID, TcGlobalConstant.Result.yiXiaoxi);super.onPause();}
将以上方法放到onPause下,就会再次唤醒屏幕,因为当前程序在弹出对话框是处于暂停状态。这个方法也是对电源锁的监听。
六,在AndroidManifest中用到的权限
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/> <uses-permission android:name="android.permission.WAKE_LOCK"/>
第一条是解锁屏幕需要的,第二条是申请电源锁需要的。
参考资料
http://blog.csdn.net/maosidiaoxian/article/details/40587935
博主的文章
大概就是如图效果,背景有点黑,那是锁屏图片。
0 0
- android模仿QQ锁屏状态弹框
- 模仿QQ 输入框
- TP模仿qq发表状态回复功能
- Android开发之自定义控件-模仿QQ输入框
- Android 模仿手机QQ表情输入和表情预览框
- jquery模仿QQ消息框
- Android实战简易教程-第三十八枪(模仿腾讯QQ的网络状态提示和设置功能实现)
- Android实战简易教程<三十八>(模仿腾讯QQ的网络状态提示和设置功能实现)
- Android模仿QQ/微信未读消息显示
- Android 模仿QQ抢红包 listView实现
- Android 模仿QQ侧滑删除ListView
- 模仿qq的动态列表框
- 模仿QQ、微信表情输入框
- Android锁屏状态下弹出activity,如新版qq的锁屏消息提示
- Android锁屏状态下弹出activity,如新版qq的锁屏消息提示
- Android锁屏状态下弹出activity,如新版qq的锁屏消息提示
- Android锁屏状态下弹出activity,如新版qq的锁屏消息提示
- Android锁屏状态下弹出activity,如新版qq的锁屏消息提示
- poj1276(多重背包)
- 《TCP/IP详解》学习笔记-第3章 IP:网际协议
- iOS UILable 加载 html
- nginx新用户指导手册
- jQuery validate 无法校验 kindeditor 非空
- android模仿QQ锁屏状态弹框
- 从运算符优先级看指针数组和数组指针
- Intents and Intent Filters
- 分布式版本控制系统Git
- hdu_1728_逃离迷宫(bfs)
- ajax 详解
- servlet 文件上传
- 在 Linux 上安装 Git
- Struts2的转发和重定向