码迷,mamicode.com
首页 > 移动开发 > 详细

Android 弹出状态栏

时间:2014-11-13 01:43:42      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:android   style   blog   http   io   color   ar   使用   sp   

背景

      在做一个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" />

    大功告成!以下为运行效果图:

bubuko.com,布布扣

图 1 点击前

 

bubuko.com,布布扣

 

图 2 点击后

    项目下载链接:http://download.csdn.net/detail/u010662742/8126165

Android 弹出状态栏

标签:android   style   blog   http   io   color   ar   使用   sp   

原文地址:http://www.cnblogs.com/limaofuyuanzhang/p/4093905.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!