当前位置: 代码迷 >> Android >> Android状态栏揭示(Notification,NotificationManager)的使用
  详细解决方案

Android状态栏揭示(Notification,NotificationManager)的使用

热度:200   发布时间:2016-05-01 14:31:47.0
Android状态栏提醒(Notification,NotificationManager)的使用

大家好今天简单讲一下Android状态栏提醒,这个在开发中也会经常使用,当我们插上USB会有状态栏提醒,来短信时也会有状态栏的提醒。

而在Android中有提醒功能的也可以用AlertDialog,但是我们要审重的使用,因为当使用AlertDialog 的时候,用户正在进行的操作将会被打断

因为当前焦点被AlertDialog得到。我们可以想像一下,当用户打游戏正爽的时候,这时候来了一条短信。如果这时候短信用AlertDialog提醒,用户必须先去处理这条提醒,从而才能继续游戏。用户可能会活活被气死。而使用Notification就不会带来这些麻烦事,用户完全可以打完游戏再去看这条短信。所以在开发中应根据实际需求,选择合适的控件。

好了我今天又简单写了一个Demo, 教大家如何使用Notification,大致分以下几个步骤:

第一步:新建一个Android工程命名为NotificationDemo.

第二步:修改main.xml代码如下:

view plaincopy to clipboardprint?
<?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="Welcome to Mr Wei's blog"?
??? />??
<Button??
??? android:id="@+id/showButton"?
??? android:layout_width="fill_parent"???
??? android:layout_height="wrap_content"?
??? android:text="showNotification"?
/>??
<Button??
??? android:id="@+id/cancelButton"?
??? android:layout_width="fill_parent"???
??? android:layout_height="wrap_content"?
??? android:text="cancelNotification"?
/>??
</LinearLayout>?
<?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="Welcome to Mr Wei's blog"
??? />
<Button
?android:id="@+id/showButton"
?android:layout_width="fill_parent"
??? android:layout_height="wrap_content"
??? android:text="showNotification"
/>
<Button
?android:id="@+id/cancelButton"
?android:layout_width="fill_parent"
??? android:layout_height="wrap_content"
??? android:text="cancelNotification"
/>
</LinearLayout>
?

第三步:修改NotificationDemo.java代码如下:

view plaincopy to clipboardprint?
package com.tutor.notification;??
import android.app.Activity;??
import android.app.Notification;??
import android.app.NotificationManager;??
import android.app.PendingIntent;??
import android.content.Context;??
import android.content.Intent;??
import android.os.Bundle;??
import android.view.View;??
import android.view.View.OnClickListener;??
import android.widget.Button;??
public class NotificationDemo extends Activity implements OnClickListener{??
??????
??? private Context mContext;??
??? private Button showButton,cancelButton;??
??? private Notification mNotification;??
??? private NotificationManager mNotificationManager;??
??? private final static int NOTIFICATION_ID = 0x0001;??
??????
??? @Override?
??? public void onCreate(Bundle savedInstanceState) {??
??????? super.onCreate(savedInstanceState);??
??????? setContentView(R.layout.main);???
??????????
??????? setupViews();?????????
??? }??
??? //这里是初始化一些操作,可以看到onCreate()方法里代码非常简洁。??
??? public void setupViews(){??
?????????? mContext = NotificationDemo.this;??
?????????? showButton = (Button)findViewById(R.id.showButton);??
?????????? cancelButton = (Button)findViewById(R.id.cancelButton);??
?????????????
?????????? mNotification = new Notification(R.drawable.icon,"This is a notification.",System.currentTimeMillis());??
?????????? //将使用默认的声音来提醒用户??
?????????? mNotification.defaults = Notification.DEFAULT_SOUND;??
?????????? mNotificationManager = (NotificationManager)this.getSystemService(NOTIFICATION_SERVICE);??
?????????????
????????????
?????????? showButton.setOnClickListener(this);??
?????????? cancelButton.setOnClickListener(this);??
??? }??
??? //按钮点击事件响应??
??? public void onClick(View v) {??
??????????
??????? if(v == showButton){??
??????????? Intent mIntent = new Intent(mContext,NotificationDemo.class);??
??????????? //这里需要设置Intent.FLAG_ACTIVITY_NEW_TASK属性??
??????????? mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);??????
??????????? PendingIntent mContentIntent =PendingIntent.getActivity(mContext,0, mIntent, 0);??
??????????? //这里必需要用setLatestEventInfo(上下文,标题,内容,PendingIntent)不然会报错.??
??????????? mNotification.setLatestEventInfo(mContext, "10086", "您的当前话费不足,请充值.哈哈~", mContentIntent);??
??????????? //这里发送通知(消息ID,通知对象)??
??????????? mNotificationManager.notify(NOTIFICATION_ID, mNotification);?????
??????? }else if(v == cancelButton){??
??????????? //取消只要把通知ID传过来就OK了.??
??????????? mNotificationManager.cancel(NOTIFICATION_ID);??
??????? }??
??? }??
}?
package com.tutor.notification;
import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class NotificationDemo extends Activity implements OnClickListener{
???
?private Context mContext;
??? private Button showButton,cancelButton;
??? private Notification mNotification;
??? private NotificationManager mNotificationManager;
??? private final static int NOTIFICATION_ID = 0x0001;
???
??? @Override
??? public void onCreate(Bundle savedInstanceState) {
??????? super.onCreate(savedInstanceState);
??????? setContentView(R.layout.main);
???????
??????? setupViews();??????
??? }
??? //这里是初始化一些操作,可以看到onCreate()方法里代码非常简洁。
??? public void setupViews(){
??? ??? mContext = NotificationDemo.this;
??? ??? showButton = (Button)findViewById(R.id.showButton);
??? ??? cancelButton = (Button)findViewById(R.id.cancelButton);
??? ???
?????????? mNotification = new Notification(R.drawable.icon,"This is a notification.",System.currentTimeMillis());
?????????? //将使用默认的声音来提醒用户
?????????? mNotification.defaults = Notification.DEFAULT_SOUND;
?????????? mNotificationManager = (NotificationManager)this.getSystemService(NOTIFICATION_SERVICE);
??????????
?????????
?????????? showButton.setOnClickListener(this);
?????????? cancelButton.setOnClickListener(this);
??? }
??? //按钮点击事件响应
?public void onClick(View v) {
??
??if(v == showButton){
???Intent mIntent = new Intent(mContext,NotificationDemo.class);
???//这里需要设置Intent.FLAG_ACTIVITY_NEW_TASK属性
???mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);?
???PendingIntent mContentIntent =PendingIntent.getActivity(mContext,0, mIntent, 0);
???//这里必需要用setLatestEventInfo(上下文,标题,内容,PendingIntent)不然会报错.
???mNotification.setLatestEventInfo(mContext, "10086", "您的当前话费不足,请充值.哈哈~", mContentIntent);
???//这里发送通知(消息ID,通知对象)
???????? mNotificationManager.notify(NOTIFICATION_ID, mNotification);??
??}else if(v == cancelButton){
???//取消只要把通知ID传过来就OK了.
???mNotificationManager.cancel(NOTIFICATION_ID);
??}
?}
}

第四步:运行Android工程,效果如下图所示:

?

?

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Android_Tutor/archive/2010/06/27/5696773.aspx

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Android_Tutor/archive/2010/06/27/5696773.aspx

  相关解决方案