首页 > 代码库 > Android 弹出状态栏
Android 弹出状态栏
背景
在做一个android电视盒子的launcher,其中有一个需求,就是点击图标然后弹出通知栏。
实现
经过查阅资料后,得知通知栏的处理跟一个叫StatusbarManager的类有关,但是该类并不是提供给开发者使用的,而是android系统自己用的,也就是说它并没有提供接口给开发者使用。在网上看到有人使用反射机制来实现,代码如下:
public void showNotification() { try { Object service = MainActivity.this.getSystemService("statusbar"); if (service != null) { Method expand = service.getClass().getMethod( "expand"); expand.invoke(service); } } catch (Exception e) { e.printStackTrace(); }}
但是直接将这段代码运行之后却发现会抛出异常,后来去查看StatusbarManager的源代码,发现这个类根本没有expand方法。但是有一个叫expandNotificationsPanel的方法可以实现这个效果。于是将代码修改了,如下:
public void showNotification() { try { /* *利用反射机制得到系统正在运行的StatusbarManager对象,再通过获取其方法来调用 *弹出的 */ Object service = MainActivity.this.getSystemService("statusbar"); if (service != null) { Method expand = service.getClass().getMethod( "expandNotificationsPanel"); expand.invoke(service); } } catch (Exception e) { e.printStackTrace(); }}
本以为这回该没错了,但是运行之后还是抛出异常,查看后原来是使用这个类是需要添加权限的。需要在AndroidManifest.xml中加入
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
大功告成!以下为运行效果图:
图 1 点击前
图 2 点击后
项目下载链接:http://download.csdn.net/detail/u010662742/8126165
Android 弹出状态栏
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。