2013-12-27 18:18 59635人阅读
我们在用手机的时候,如果来了短信,而我们没有点击查看的话,是不是在手机的最上边的状态栏里有一个短信的小图标提示啊?你是不是也想实现这种功能呢?今天的Notification就是解决这个问题的。
我们也知道Android系统也是在不断升级的,有关Notification的用法也就有很多种,有的方法已经被android抛弃了,现在我实现了三种不同的方法,并适应不同的android版本。现在我就把代码公布出来,我喜欢把解释写在代码中,在这里我就不多说了,先看效果图:
![技术分享](http://img.blog.csdn.net/20131227181443812?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbG9vbmdnZ2Ryb2lk/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![技术分享](http://img.blog.csdn.net/20131227181451218?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbG9vbmdnZ2Ryb2lk/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![技术分享](http://img.blog.csdn.net/20131227181459093?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbG9vbmdnZ2Ryb2lk/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
再看代码,主要的代码如下:
- package net.loonggg.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.widget.RemoteViews;
-
- public class MainActivity extends Activity {
- private static final int NOTIFICATION_FLAG = 1;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- }
-
- public void notificationMethod(View view) {
-
- NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
- switch (view.getId()) {
-
- case R.id.btn1:
-
- PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,
- new Intent(this, MainActivity.class), 0);
-
-
-
- Notification notify1 = new Notification();
- notify1.icon = R.drawable.message;
- notify1.tickerText = "TickerText:您有新短消息,请注意查收!";
- notify1.when = System.currentTimeMillis();
- notify1.setLatestEventInfo(this, "Notification Title",
- "This is the notification message", pendingIntent);
- notify1.number = 1;
- notify1.flags |= Notification.FLAG_AUTO_CANCEL;
-
- manager.notify(NOTIFICATION_FLAG, notify1);
- break;
-
- case R.id.btn2:
- PendingIntent pendingIntent2 = PendingIntent.getActivity(this, 0,
- new Intent(this, MainActivity.class), 0);
-
-
- Notification notify2 = new Notification.Builder(this)
- .setSmallIcon(R.drawable.message)
-
- .setTicker("TickerText:" + "您有新短消息,请注意查收!")
-
- .setContentTitle("Notification Title")
-
- .setContentText("This is the notification message")
- .setContentIntent(pendingIntent2)
- .setNumber(1)
- .getNotification();
-
- notify2.flags |= Notification.FLAG_AUTO_CANCEL;
- manager.notify(NOTIFICATION_FLAG, notify2);
- break;
-
- case R.id.btn3:
- PendingIntent pendingIntent3 = PendingIntent.getActivity(this, 0,
- new Intent(this, MainActivity.class), 0);
-
-
- Notification notify3 = new Notification.Builder(this)
- .setSmallIcon(R.drawable.message)
- .setTicker("TickerText:" + "您有新短消息,请注意查收!")
- .setContentTitle("Notification Title")
- .setContentText("This is the notification message")
- .setContentIntent(pendingIntent3).setNumber(1).build();
-
- notify3.flags |= Notification.FLAG_AUTO_CANCEL;
- manager.notify(NOTIFICATION_FLAG, notify3);
- break;
-
- case R.id.btn4:
-
-
- Notification myNotify = new Notification();
- myNotify.icon = R.drawable.message;
- myNotify.tickerText = "TickerText:您有新短消息,请注意查收!";
- myNotify.when = System.currentTimeMillis();
- myNotify.flags = Notification.FLAG_NO_CLEAR;
- RemoteViews rv = new RemoteViews(getPackageName(),
- R.layout.my_notification);
- rv.setTextViewText(R.id.text_content, "hello wrold!");
- myNotify.contentView = rv;
- Intent intent = new Intent(Intent.ACTION_MAIN);
- PendingIntent contentIntent = PendingIntent.getActivity(this, 1,
- intent, 1);
- myNotify.contentIntent = contentIntent;
- manager.notify(NOTIFICATION_FLAG, myNotify);
- break;
- case R.id.btn5:
-
- manager.cancel(NOTIFICATION_FLAG);
-
-
- break;
- default:
- break;
- }
- }
- }
再看主布局文件:
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
- tools:context=".MainActivity" >
-
- <Button
- android:id="@+id/btn1"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:onClick="notificationMethod"
- android:text="默认通知(已被抛弃,但是通用)" />
-
- <Button
- android:id="@+id/btn2"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:onClick="notificationMethod"
- android:text="默认通知(API11之后可用)" />
-
- <Button
- android:id="@+id/btn3"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:onClick="notificationMethod"
- android:text="默认通知(API16之后可用)" />
-
- <Button
- android:id="@+id/btn4"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:onClick="notificationMethod"
- android:text="自定义通知" />
-
- <Button
- android:id="@+id/btn5"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:onClick="notificationMethod"
- android:text="清除通知" />
-
- </LinearLayout>
还有一个是:自定义通知的布局文件my_notification.xml,代码如下:
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:background="#ffffff"
- android:orientation="vertical" >
-
- <TextView
- android:id="@+id/text_content"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textSize="20sp" />
-
- </LinearLayout>
转载请注明出处:http://blog.csdn.net/loongggdroid/article/details/17616509