android 状态栏实例
来源:互联网 发布:数据魔方下线了吗 编辑:程序博客网 时间:2024/06/02 02:29
当有未接电话或短信时,在Android手机的顶部状态栏就会出现一个小图标,提示用户没有处理的快讯,这时用触笔按住状态栏往下拖动(在模拟器里用鼠标点住那个小图标往下拖动),就可以展开并查看这些快讯。Android平台专门提供了NotificationManager来管理状态栏信息,提供了Notification来处理这些快讯信息。因此,我们就可以很轻松地实现这一功能。
首先通过getSystemService方法得到 NotificationManager 对象,我们可以对Notification的内容、图标、标题等属性进行设置;然后通过NotificationManager 对象的 notify方法执行一个Notification快讯。大家也可以去文档里边看看 里边也有 Notification 和 NotificationManager 的讲解 在文档的这个位置 Dev Guide-->Notifying the User ---->Creating Status Bar Notifications 这有一份翻译的还可以 http://blog.csdn.net/iamlazybone/archive/2010/10/22/5959598.aspx如果没有文档可以再这里下载http://www.android123.com.cn/android_kit.html
我们大概要实现一个这样的东西。有四个按钮 我们点击一个按钮 就会发送一个通知消息并且在状态栏显示 通知 当我们查看这个通知消息的时候 我们一点击这个通知消息 就会 跳到另外一个Activity 点击不同的按钮 手机会有不同的反应 比如 震动、或者灯光、其实是没有的 因为我用的是模拟器。 我们要用到2个 Activity 所以也就会用到2个布局文件 先让我们看看运行效果。
man.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<Button
android:id="@+id/Button01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button01">
<requestFocus/>
</Button>
<Button
android:id="@+id/Button02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button02"
/>
<Button
android:id="@+id/Button03"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button03"/>
<Button
android:id="@+id/Button04"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button04"/>
</LinearLayout>
另外一个布局文件man2.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="这是Activity02 谢谢使用!"
/>
</LinearLayout>
下面分别为2个Activity
Activity02
如果拿着代码去执行 可能、也许、大概、还会遇到 这样一个异常
11-19 17:16:30.122: ERROR/AndroidRuntime(239): java.lang.SecurityException: Requires VIBRATE permission
这是动因为我们代码里边用了震功能 所以要在 AndroidManifest.xml中声明 震动的权限
<uses-permission android:name="android.permission.VIBRATE" />
那就在来几个可能会用到的 权限声明
打电话权限:
<uses-permission android:name="android.permission.CALL_PHONE" />
使用状态栏权限:
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
获取当前或最近运行的任务的信息的权限:
<uses-permission android:name="android.permission.GET_TASKS" />
读取通信录权限:
<uses-permission android:name="android.permission.READ_CONTACTS"/>
设置壁纸权限:
<uses-permission android:name="android.permission.SET_WALLPAPER" />
允许程序设置壁纸hits的权限:
<uses-permission android:name="android.permission.SET_WALLPAPER_HINTS" />
使用震动功能权限:
<uses-permission android:name="android.permission.VIBRATE" />
修改删除launcher.db内容权限:
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
绑定widget权限:
<uses-permission android:name="android.permission.BIND_APPWIDGET" />
读取launcher.db内容权限:
<uses-permission android:name="net.sunniwell.launcher.permission.READ_SETTINGS" />
修改删除launcher.db内容权限:
<uses-permission android:name="net.sunniwell.launcher.permission.WRITE_SETTINGS" />
首先通过getSystemService方法得到 NotificationManager 对象,我们可以对Notification的内容、图标、标题等属性进行设置;然后通过NotificationManager 对象的 notify方法执行一个Notification快讯。大家也可以去文档里边看看 里边也有 Notification 和 NotificationManager 的讲解 在文档的这个位置 Dev Guide-->Notifying the User ---->Creating Status Bar Notifications 这有一份翻译的还可以 http://blog.csdn.net/iamlazybone/archive/2010/10/22/5959598.aspx如果没有文档可以再这里下载http://www.android123.com.cn/android_kit.html
我们大概要实现一个这样的东西。有四个按钮 我们点击一个按钮 就会发送一个通知消息并且在状态栏显示 通知 当我们查看这个通知消息的时候 我们一点击这个通知消息 就会 跳到另外一个Activity 点击不同的按钮 手机会有不同的反应 比如 震动、或者灯光、其实是没有的 因为我用的是模拟器。 我们要用到2个 Activity 所以也就会用到2个布局文件 先让我们看看运行效果。
man.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<Button
android:id="@+id/Button01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button01">
<requestFocus/>
</Button>
<Button
android:id="@+id/Button02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button02"
/>
<Button
android:id="@+id/Button03"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button03"/>
<Button
android:id="@+id/Button04"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button04"/>
</LinearLayout>
另外一个布局文件man2.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="这是Activity02 谢谢使用!"
/>
</LinearLayout>
下面分别为2个Activity
- package xiaohang.zhimeng;
- import android.app.Activity;
- import android.app.Notification;
- import android.app.NotificationManager;
- import android.app.PendingIntent;
- import android.content.Intent;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.Button;
- public class Activity01 extends Activity {
- // 定义Button
- Button m_Button1, m_Button2, m_Button3, m_Button4;
- // 声明通知(消息)管理器 只要知道它是用来管理通知消息就行
- NotificationManager m_NotificationManager;
- Intent m_Intent;
- PendingIntent m_PendingIntent;
- // 声明Notification对象
- Notification m_Notification;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- // 初始化NotificationManager对象 Get a reference to the NotificationManager
- m_NotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
- // 获取4个按钮对象
- m_Button1 = (Button) findViewById(R.id.Button01);
- m_Button2 = (Button) findViewById(R.id.Button02);
- m_Button3 = (Button) findViewById(R.id.Button03);
- m_Button4 = (Button) findViewById(R.id.Button04);
- // 点击通知时转移内容也就是从哪个Activity跳到哪个Activity 这里是从Activity01跳到Activity02
- m_Intent = new Intent(Activity01.this, Activity02.class);
- // Pending这个词是“挂起”、“暂挂”的意思 我就理解为一个挂起 或者暂挂的 Intent 临时的留着一会用 xh
- // E文实在是差看不懂文档
- m_PendingIntent = PendingIntent.getActivity(Activity01.this, 0,
- m_Intent, 0);
- // 构造Notification对象 它就是一个通知消息对象 我们只要知道我们要在手机最上边状态栏通知消息的时候就用这个对象
- m_Notification = new Notification();
- // 给按钮m_Button1设置监听器
- m_Button1.setOnClickListener(new Button.OnClickListener() {
- @Override
- public void onClick(View v) {
- // 设置通知在状态栏显示的图标
- m_Notification.icon = R.drawable.img1;
- // 当我们发送通知时在状态栏显示的内容 这个显示时暂时的大家试试就知道了
- m_Notification.tickerText = "Button1通知内容.......";
- // 通知时发出默认的声音 这个defaults是Notification的一个int型的变量
- // DEFAULT_SOUND是Notification这个类已经定义好的常量直接用就O 了
- m_Notification.defaults = Notification.DEFAULT_SOUND;
- // 设置通知显示的参数 (Context context, CharSequence contentTitle,
- // CharSequence contentText, PendingIntent contentIntent)
- // 参数1上下文对象Context 参数2 类似标题Title 这里大家试试 看看那些文字显示在那个位置明白意思就OK
- m_Notification.setLatestEventInfo(Activity01.this, "xhButton1",
- "Button1通 知", m_PendingIntent);
- // 可以理解为执行这个通知 或者说 由NotificationManager对象或者它的一个引用把
- // 通知发出去然后就会在状态栏显示了
- // 详细信息大家可以查看文档
- m_NotificationManager.notify(0, m_Notification);
- }
- });
- // 下边就不写了
- m_Button2.setOnClickListener(new Button.OnClickListener() {
- @Override
- public void onClick(View v) {
- m_Notification.icon = R.drawable.img2;
- m_Notification.tickerText = "Button2通知内容........";
- // 通知震动
- m_Notification.defaults = Notification.DEFAULT_VIBRATE;
- m_Notification.setLatestEventInfo(Activity01.this, "Button2",
- "Button2通知", m_PendingIntent);
- m_NotificationManager.notify(0, m_Notification);
- }
- });
- m_Button3.setOnClickListener(new Button.OnClickListener() {
- @Override
- public void onClick(View v) {
- m_Notification.icon = R.drawable.img3;
- m_Notification.tickerText = "Button3通知内容........";
- // 通知时屏幕发亮
- m_Notification.defaults = Notification.DEFAULT_LIGHTS;
- m_Notification.setLatestEventInfo(Activity01.this, "Button3",
- "Button3通知", m_PendingIntent);
- m_NotificationManager.notify(0, m_Notification);
- }
- });
- m_Button4.setOnClickListener(new Button.OnClickListener() {
- @Override
- public void onClick(View v) {
- m_Notification.icon = R.drawable.img4;
- m_Notification.tickerText = "Button4通知内容........";
- // 通知时既震动又屏幕发亮还有默认的声音 这里用的是ALL
- m_Notification.defaults = Notification.DEFAULT_ALL;
- m_Notification.setLatestEventInfo(Activity01.this, "Button4",
- "Button4通知", m_PendingIntent);
- m_NotificationManager.notify(0, m_Notification);
- }
- });
- }
- }
package xiaohang.zhimeng;import android.app.Activity;import android.app.Notification;import android.app.NotificationManager;import android.app.PendingIntent;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.Button;public class Activity01 extends Activity {// 定义ButtonButton m_Button1, m_Button2, m_Button3, m_Button4;// 声明通知(消息)管理器 只要知道它是用来管理通知消息就行NotificationManager m_NotificationManager;Intent m_Intent;PendingIntent m_PendingIntent;// 声明Notification对象Notification m_Notification;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);// 初始化NotificationManager对象 Get a reference to the NotificationManagerm_NotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);// 获取4个按钮对象m_Button1 = (Button) findViewById(R.id.Button01);m_Button2 = (Button) findViewById(R.id.Button02);m_Button3 = (Button) findViewById(R.id.Button03);m_Button4 = (Button) findViewById(R.id.Button04);// 点击通知时转移内容也就是从哪个Activity跳到哪个Activity 这里是从Activity01跳到Activity02m_Intent = new Intent(Activity01.this, Activity02.class);// Pending这个词是“挂起”、“暂挂”的意思 我就理解为一个挂起 或者暂挂的 Intent 临时的留着一会用 xh// E文实在是差看不懂文档m_PendingIntent = PendingIntent.getActivity(Activity01.this, 0,m_Intent, 0);// 构造Notification对象 它就是一个通知消息对象 我们只要知道我们要在手机最上边状态栏通知消息的时候就用这个对象m_Notification = new Notification();// 给按钮m_Button1设置监听器m_Button1.setOnClickListener(new Button.OnClickListener() {@Overridepublic void onClick(View v) {// 设置通知在状态栏显示的图标m_Notification.icon = R.drawable.img1;// 当我们发送通知时在状态栏显示的内容 这个显示时暂时的大家试试就知道了m_Notification.tickerText = "Button1通知内容.......";// 通知时发出默认的声音 这个defaults是Notification的一个int型的变量// DEFAULT_SOUND是Notification这个类已经定义好的常量直接用就O 了m_Notification.defaults = Notification.DEFAULT_SOUND;// 设置通知显示的参数 (Context context, CharSequence contentTitle,// CharSequence contentText, PendingIntent contentIntent)// 参数1上下文对象Context 参数2 类似标题Title 这里大家试试 看看那些文字显示在那个位置明白意思就OKm_Notification.setLatestEventInfo(Activity01.this, "xhButton1","Button1通 知", m_PendingIntent);// 可以理解为执行这个通知 或者说 由NotificationManager对象或者它的一个引用把// 通知发出去然后就会在状态栏显示了// 详细信息大家可以查看文档m_NotificationManager.notify(0, m_Notification);}});// 下边就不写了m_Button2.setOnClickListener(new Button.OnClickListener() {@Overridepublic void onClick(View v) {m_Notification.icon = R.drawable.img2;m_Notification.tickerText = "Button2通知内容........";// 通知震动m_Notification.defaults = Notification.DEFAULT_VIBRATE;m_Notification.setLatestEventInfo(Activity01.this, "Button2","Button2通知", m_PendingIntent);m_NotificationManager.notify(0, m_Notification);}});m_Button3.setOnClickListener(new Button.OnClickListener() {@Overridepublic void onClick(View v) {m_Notification.icon = R.drawable.img3;m_Notification.tickerText = "Button3通知内容........";// 通知时屏幕发亮m_Notification.defaults = Notification.DEFAULT_LIGHTS;m_Notification.setLatestEventInfo(Activity01.this, "Button3","Button3通知", m_PendingIntent);m_NotificationManager.notify(0, m_Notification);}});m_Button4.setOnClickListener(new Button.OnClickListener() {@Overridepublic void onClick(View v) {m_Notification.icon = R.drawable.img4;m_Notification.tickerText = "Button4通知内容........";// 通知时既震动又屏幕发亮还有默认的声音 这里用的是ALLm_Notification.defaults = Notification.DEFAULT_ALL;m_Notification.setLatestEventInfo(Activity01.this, "Button4","Button4通知", m_PendingIntent);m_NotificationManager.notify(0, m_Notification);}});}}
Activity02
- package xiaohang.zhimeng;
- import android.app.Activity;
- import android.os.Bundle;
- public class Activity02 extends Activity{
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- super.onCreate(savedInstanceState);
- //这里就灰常easy了设置个布局文件完事
- setContentView(R.layout.man2);
- }
- }
package xiaohang.zhimeng;import android.app.Activity;import android.os.Bundle;public class Activity02 extends Activity{@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);//这里就灰常easy了设置个布局文件完事setContentView(R.layout.man2);}}
如果拿着代码去执行 可能、也许、大概、还会遇到 这样一个异常
11-19 17:16:30.122: ERROR/AndroidRuntime(239): java.lang.SecurityException: Requires VIBRATE permission
这是动因为我们代码里边用了震功能 所以要在 AndroidManifest.xml中声明 震动的权限
<uses-permission android:name="android.permission.VIBRATE" />
那就在来几个可能会用到的 权限声明
打电话权限:
<uses-permission android:name="android.permission.CALL_PHONE" />
使用状态栏权限:
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
获取当前或最近运行的任务的信息的权限:
<uses-permission android:name="android.permission.GET_TASKS" />
读取通信录权限:
<uses-permission android:name="android.permission.READ_CONTACTS"/>
设置壁纸权限:
<uses-permission android:name="android.permission.SET_WALLPAPER" />
允许程序设置壁纸hits的权限:
<uses-permission android:name="android.permission.SET_WALLPAPER_HINTS" />
使用震动功能权限:
<uses-permission android:name="android.permission.VIBRATE" />
修改删除launcher.db内容权限:
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
绑定widget权限:
<uses-permission android:name="android.permission.BIND_APPWIDGET" />
读取launcher.db内容权限:
<uses-permission android:name="net.sunniwell.launcher.permission.READ_SETTINGS" />
修改删除launcher.db内容权限:
<uses-permission android:name="net.sunniwell.launcher.permission.WRITE_SETTINGS" />
- android 状态栏实例
- android 动态控制状态栏显示和隐藏的方法实例
- Android 获取屏幕高度,标题高度,状态栏高度(实例代码)
- android 动态控制状态栏显示和隐藏的方法实例
- Android 状态栏
- Android 状态栏
- Android状态栏
- android 状态栏
- android状态栏
- Android 状态栏
- 状态栏输出信息实例
- 状态栏编程实例
- android 透明状态栏,沉浸状态栏
- android 状态栏浸透 状态栏半透明
- Android状态栏着色-透明状态栏
- Android系统状态栏\沉浸状态栏
- MFC实例学习(1)----状态栏
- 状态栏彩色渐变进度条实例
- 项目成功的12个关键原则
- 使用struts2完成jQuery进行ajax级联
- jvm jre jdk 区别
- ROOT android 原理。 基于(zergRush)
- Qt for Embedded Linux Environment Variables
- android 状态栏实例
- CentOS在Shell中修改IP地址
- java.lang.OutOfMemoryError: PermGen space
- 随机图 & 如何处理Power-law(幂律)分布的数据
- Android多媒体学习一:Android中Image的简单实例。
- Qt for Embedded Linux Display Management
- meanShift算法介绍
- sh: ./hello: not executable: magic 7F45
- GXT(Ext-Gwt)例子的创建、配置、部署心得