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

时间: 2024-11-10 00:42:04

Android 弹出状态栏的相关文章

经常使用的android弹出对话框

我们在平时做开发的时候,免不了会用到各种各样的对话框,相信有过其它平台开发经验的朋友都会知道,大部分的平台都仅仅提供了几个最简单的实现,假设我们想实现自己特定需求的对话框,大家可能首先会想到,通过继承等方式,重写我们自己的对话框.当然,这也是不失为一个不错的解决方式,可是一般的情况却是这样,我们重写的对话框,或许仅仅在一个特定的地方会用到,为了这一次的使用,而去创建一个新类,往往有点杀鸡用牛刀的感觉,甚至会对我们的程序添加不必要的复杂性,对于这样的情形的对话框有没有更优雅的解决方式呢?    

android 弹出的软键盘遮挡住EditText文本框的解决方案

1.android 弹出的软键盘遮挡住EditText文本框的解决方案:把Activit对应的布局文件filename.xml文件里的控件用比重设置布局.(例如:android:layout_weight="31")并且尽可能把高度设置成自适应的:android:layout_height="wrap_content",也就是没有设置高度的控件可压缩度的总和,如果比软键盘的高度要大,在EditText文本输入的时候,弹出的软键盘就不会遮挡住文本输入框.2.设置默认软

Android 弹出框

1.Java package com.fish.helloworld; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint;

android弹出时间选择框

时间选择框: new DatePickerDialog(this, new OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { if (year >= 1910 && year <= 2014) { int temp = monthOfYear + 1; String monthStr = temp

Android弹出Toast工具类总结

Android弹出Toast工具类总结,包括系统自带的,也包括自定义的. public class ToastUtil { public ToastUtil() { } public static Toast showShortToast(Context context, String text) { Toast toast = Toast.makeText(context, text, 0); toast.show(); return toast; } public static Toast

Android弹出键盘布局闪动原理和解决

弹出键盘布局闪动原理和解决 在开发中,遇到一个问题:做一个微信一样,表情输入和软键盘在切换的时候,聊天界面不闪动的问题.为了解决这个问题,需要知道一下Android的软键盘弹出的时候发生的几个变化. 当AndroidMainfest.xml 中配置android:windowSoftInputMode="adjustResize|stateHidden" 属性后,如果弹出软键盘,那么会重绘界面.基本流程如下(API 10): 1.  Android 收到打开软键盘命令 2.  Andr

android 弹出框(输入框和选择框)

1.输入框: final EditText inputServer = new EditText(this); inputServer.setFilters(new InputFilter[]{new InputFilter.LengthFilter(50)}); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("个性点的签名").setIcon(android.R.drawab

android弹出窗口的实现(PopupWindow)

最近看到新浪微博顶部栏的微博分组效果很炫,从网上查了一些资料明白原来是用PopupWindow实现的,今天自己也写了一个例子实现了这种效果,希望对大家有帮助. PopupWindow就是弹出窗口的意思,类似windows下面的开始按钮.PopupWindow可以实现浮层效果,而且可以自定义显示位置,出现和退出时的动画. 首先定义新浪微博的顶部栏,title_two_button.xml和main.xml [html] view plaincopyprint? <?xml version="

android学习——常用android弹出对话框

我们在平时做开发的时候,免不了会用到各种各样的对话框,相信有过其他平台开发经验的朋友都会知道,大部分的平台都只提供了几个最简单的实现,如果我们想实现自己特定需求的对话框,大家可能首先会想到,通过继承等方式,重写我们自己的对话框.当然,这也是不失为一个不错的解决方式,但是一般的情况却是这样,我们重写的对话框,也许只在一个特定的地方会用到,为了这一次的使用,而去创建一个新类,往往有点杀鸡用牛刀的感觉,甚至会对我们的程序增加不必要的复杂性,对于这种情形的对话框有没有更优雅的解决方案呢?     幸运的