Android 展开/折叠 系统下拉通知栏
2017-01-03 11:28
2191 查看
最近几天碰到一个郁闷的问题,在有些机型上面使用PendingIntent.getActivity(context, 0, intent, 0)的方式打开一个指定的Activity后,通知栏并不主动折叠,让我一度的以为使用PendingIntent.getActivity()的方式无法打开Activity,后面才发现其实已经打开了Activity。但是因为通知栏没有主动折叠,遮挡了Activity照成的误解。
查看了Android源码后发现在android.app包下个被隐藏的类:android.app.StatusBarManager,该类提供了折叠和展开通知栏的相应方法。使用该类前需要获得com.android.serevier.StatusBarManager的一个系统服务对象,使用context.getSystemService(“statusbar”);就可以获取了。这个服务也是被隐藏的。获取服务的Key值常量也是被隐藏的。详见android.content.Context.STATUS_BAR_SERVICE常量定义。因展开和折叠通知栏的类和接口都被隐藏了,所以只能通过反射的方式才能调用,具体代码如下:
原文地址:http://blog.csdn.net/xiongwei3673605/article/details/42875017
查看了Android源码后发现在android.app包下个被隐藏的类:android.app.StatusBarManager,该类提供了折叠和展开通知栏的相应方法。使用该类前需要获得com.android.serevier.StatusBarManager的一个系统服务对象,使用context.getSystemService(“statusbar”);就可以获取了。这个服务也是被隐藏的。获取服务的Key值常量也是被隐藏的。详见android.content.Context.STATUS_BAR_SERVICE常量定义。因展开和折叠通知栏的类和接口都被隐藏了,所以只能通过反射的方式才能调用,具体代码如下:
/** * 折叠通知栏 * * @param context */ public static void collapsingNotification(Context context) { Object service = context.getSystemService("statusbar"); if (null == service) return; try { Class<?> clazz = Class.forName("android.app.StatusBarManager"); int sdkVersion = android.os.Build.VERSION.SDK_INT; Method collapse = null; if (sdkVersion <= 16) { collapse = clazz.getMethod("collapse"); } else { collapse = clazz.getMethod("collapsePanels"); } collapse.setAccessible(true); collapse.invoke(service); } catch (Exception e) { e.printStackTrace(); } }
/** * 折叠通知栏 * * @param context */ public static void collapsingNotification(Context context) { Object service = context.getSystemService("statusbar"); if (null == service) return; try { Class<?> clazz = Class.forName("android.app.StatusBarManager"); int sdkVersion = android.os.Build.VERSION.SDK_INT; Method collapse = null; if (sdkVersion <= 16) { collapse = clazz.getMethod("collapse"); } else { collapse = clazz.getMethod("collapsePanels"); } collapse.setAccessible(true); collapse.invoke(service); } catch (Exception e) { e.printStackTrace(); } }不要漏了这个权限:
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR"/>
原文地址:http://blog.csdn.net/xiongwei3673605/article/details/42875017
相关文章推荐
- Android 展开/折叠 系统下拉通知栏
- Android 使用动画效果后的控件位置处理 类似系统通知栏下拉动画!!
- Android展开/折叠通知栏
- Android系统定制之SystemUI修改:下拉通知栏尺寸【转】
- Android系统定制之SystemUI修改:下拉通知栏尺寸
- Android 5.1系统禁止通知状态栏下拉
- Android 使用动画效果后的控件位置处理 类似系统通知栏下拉动画
- Android 反射调用方法并利用此方法展开android通知栏(兼容4.2及以上)
- 从零开始--系统深入学习android(实践-让我们开始写代码-Android框架学习-7.通知)
- Android通知系统
- 从零开始--系统深入学习android(实践-让我们开始写代码-Android框架学习-7.通知)
- 基于jQuery实现下拉收缩(展开与折叠)特效
- 主动通知Android系统图库进行更新
- android中禁止下拉通知栏
- 浅析Android 4.0的通知系统(附Android 4.0设计指南全文翻译)
- 浅析Android 4.0的通知系统(附Android 4.0设计指南全文翻译) 推荐
- 添加android系统通知
- Android 截取指定号码的短信 并且不让系统获取短信通知用户
- Android使用ContentObserver监听数据库变化 接受指定号码的短信,并且不让系统截取到通知用户
- 浅析Android 4.0的通知系统(附Android 4.0设计指南全文翻译)