【Android 开发教程】Notification通知

系统 1728 0

本章节翻译自《Beginning-Android-4-Application-Development》,如有翻译不当的地方,敬请指出。

原书购买地址 http://www.amazon.com/Beginning-Android-4-Application-Development/dp/1118199545/


到目前为止,想必大家已经都熟悉使用Toast去给用户显示信息了。尽管使用Toast很方便,但是Toast显示的通知并不是永久存储的。它只在屏幕上显示一小段时间,然后就消失了。如果它包含一些特别重要的信息,如果用户没有观察屏幕,那么用户就很容易错过它。

对于那些重要的信息,应该采用一种更加持久保存的方法。在这种情况下,应该使用NotificationMnanger(消息管理器)去显示一个长久的信息,这个消息被显示在了StatusBar(状态栏)上面,使用用户能够很容易地看见。

接下来展示如何发送一个Notification通知。

1. 创建一个工程:Notifications。

2. 在包中新建一个名为NotificationView的类,同时在res/layout文件夹下面新建一个名为notification.xml 文件,它将作为NotificationView的视图。

3. notification.xml中的文件。

  1. <? xml version = "1.0" encoding = "utf-8" ?>
  2. < LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
  3. android:layout_width = "fill_parent"
  4. android:layout_height = "fill_parent"
  5. android:orientation = "vertical" >
  6. < TextView
  7. android:layout_width = "fill_parent"
  8. android:layout_height = "wrap_content"
  9. android:text = "Herearethedetailsforthenotification..." />
  10. </ LinearLayout >

4.NotificationView.java中的代码。
  1. public class NotificationView extends Activity{
  2. @Override
  3. public void onCreate(BundlesavedInstanceState){
  4. super .onCreate(savedInstanceState);
  5. setContentView(R.layout.notification);
  6. //---lookupthenotificationmanagerservice---
  7. NotificationManagernm=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
  8. //---cancelthenotificationthatwestarted---
  9. nm.cancel(getIntent().getExtras().getInt( "notificationID" ));
  10. }
  11. }

5. AndroidManifest.xml中的代码。

  1. <? xml version = "1.0" encoding = "utf-8" ?>
  2. < manifest xmlns:android = "http://schemas.android.com/apk/res/android"
  3. package = "net.learn2develop.Notifications"
  4. android:versionCode = "1"
  5. android:versionName = "1.0" >
  6. < uses-sdk android:minSdkVersion = "14" />
  7. < uses-permission android:name = "android.permission.VIBRATE" />
  8. < application
  9. android:icon = "@drawable/ic_launcher"
  10. android:label = "@string/app_name" >
  11. < activity
  12. android:label = "@string/app_name"
  13. android:name = ".NotificationsActivity" >
  14. < intent-filter >
  15. < action android:name = "android.intent.action.MAIN" />
  16. < category android:name = "android.intent.category.LAUNCHER" />
  17. </ intent-filter >
  18. </ activity >
  19. < activity android:name = ".NotificationView"
  20. android:label = "Detailsofnotification" >
  21. < intent-filter >
  22. < action android:name = "android.intent.action.MAIN" />
  23. < category android:name = "android.intent.category.DEFAULT" />
  24. </ intent-filter >
  25. </ activity >
  26. </ application >
  27. </ manifest >
6. main.xml中的代码。
  1. <? xml version = "1.0" encoding = "utf-8" ?>
  2. < LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
  3. android:layout_width = "fill_parent"
  4. android:layout_height = "fill_parent"
  5. android:orientation = "vertical" >
  6. < Button
  7. android:id = "@+id/btn_displaynotif"
  8. android:layout_width = "fill_parent"
  9. android:layout_height = "wrap_content"
  10. android:text = "DisplayNotification"
  11. android:onClick = "onClick" />
  12. </ LinearLayout >
7. 最后,NotificationActivity.java中的代码。
  1. public class NotificationsActivity extends Activity{
  2. int notificationID= 1 ;
  3. /**Calledwhentheactivityisfirstcreated.*/
  4. @Override
  5. public void onCreate(BundlesavedInstanceState){
  6. super .onCreate(savedInstanceState);
  7. setContentView(R.layout.main);
  8. }
  9. public void onClick(Viewview){
  10. displayNotification();
  11. }
  12. protected void displayNotification()
  13. {
  14. //---PendingIntenttolaunchactivityiftheuserselects
  15. //thisnotification---
  16. Intenti= new Intent( this ,NotificationView. class );
  17. i.putExtra( "notificationID" ,notificationID);
  18. PendingIntentpendingIntent=
  19. PendingIntent.getActivity( this , 0 ,i, 0 );
  20. NotificationManagernm=(NotificationManager)
  21. getSystemService(NOTIFICATION_SERVICE);
  22. Notificationnotif= new Notification(
  23. R.drawable.ic_launcher,
  24. "Reminder:Meetingstartsin5minutes" ,
  25. System.currentTimeMillis());
  26. CharSequencefrom= "SystemAlarm" ;
  27. CharSequencemessage= "Meetingwithcustomerat3pm..." ;
  28. notif.setLatestEventInfo( this ,from,message,pendingIntent);
  29. //---100msdelay,vibratefor250ms,pausefor100msand
  30. //thenvibratefor500ms---
  31. notif.vibrate= new long []{ 100 , 250 , 100 , 500 };
  32. nm.notify(notificationID,notif);
  33. }
  34. }
8. 调试。

9. 点击Display Notification按钮,在状态栏上面就会出现一个notification通知。如图:

【Android 开发教程】Notification通知

10.将状态栏拉下来,就会显示这个Notification通知的详尽信息。如图:

【Android 开发教程】Notification通知

11. 点击这个Notification通知,就会显示NotificationView的界面,同时,状态栏上面的通知也消失了。如图:

【Android 开发教程】Notification通知

【Android 开发教程】Notification通知


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论