歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android開發教程:Notification和NotificationManager淺析

Android開發教程:Notification和NotificationManager淺析

日期:2017/3/1 10:36:43   编辑:Linux編程
Notification和NotificationManager操作相對比較簡單,一般獲取系統級的服務NotificationManager,然後實例化Notification,設置它的屬性,通過NotificationManager發出通知就可以了。基本步驟如下:

1.獲取NotificationManager

String service = Context.NOTIFICATION_SERVICE;

NotificationManager mNotificationManager =(NotificationManager)getSystemService(service);

2.實例化Notification對象

  1. //實例化Notification
  2. Notification notification = new Notification();

3.設置Notification的屬性

  1. // 設置顯示圖標,該圖標會在狀態欄顯示
  2. int icon = notification.icon = R.drawable.happy;
  3. // 設置顯示提示信息,該信息也在狀態欄顯示
  4. String tickerText = "測試Notification";
  5. // 顯示時間
  6. long when = System.currentTimeMillis(); notification.icon = icon;
  7. notification.tickerText = tickerText;
  8. notification.when = when;
  9. //也可以這樣設置
  10. Notification notification_2=new Notification(icon,tickerText,when)

調用setLatestEventInfo()方法在視圖中設置圖標和時間。

  1. // 實例化Intent
  2. Intent intent = new Intent(MainActivity.this, MainActivity.class);
  3. // 獲得PendingIntent
  4. PendingIntent pIntent = PendingIntent.getActivity(MainActivity.this, 0, intent, 0);
  5. // 設置事件信息
  6. notification.setLatestEventInfo(MainActivity.this, " Title", "Content", pIntent);

4.發出通知

  1. //Notification標示ID
  2. private static final int ID = 1;
  3. //發出通知
  4. mNotificationManager.notify(ID, n);

下面是具體的例子,在這個例子裡定義了一個MainActivity發出廣播通知,定義一個MyReceiver類繼承Broadcasts接受通知,當接收完通知之後,啟動一個SecondActivity,在SecondActivity類中通過Notification和NotificationManager來可視化顯示廣播通知。具體的步驟如下:

MainActivity.java

  1. package com.Android.notification;
  2. import android.app.Activity;
  3. import android.content.Intent;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.view.View.OnClickListener;
  7. import android.widget.Button;
  8. public class MainActivity extends Activity {
  9. // 聲明Button
  10. private Button btn;
  11. // 定義Broadcast Receiver action
  12. private static final String MY_ACTION = "com.android.notification.MY_ACTION";
  13. @Override
  14. public void onCreate(Bundle savedInstanceState) {
  15. super.onCreate(savedInstanceState);
  16. // 設置當前布局視圖
  17. setContentView(R.layout.main);
  18. // 實例化Button
  19. btn = (Button)findViewById(R.id.Button1);
  20. // 添加事件監聽器
  21. btn.setOnClickListener(listener);
  22. }
  23. // 創建事件監聽器
  24. private OnClickListener listener = new OnClickListener() {
  25. @Override
  26. public void onClick(View v) {
  27. // 實例化Intent
  28. Intent intent = new Intent();
  29. // 設置Intent action屬性
  30. intent.setAction(MY_ACTION);
  31. // 發起廣播
  32. sendBroadcast(intent);
  33. }
  34. };
  35. }

MyReceiver.java

  1. package com.android.notification;
  2. import android.content.BroadcastReceiver;
  3. import android.content.Context;
  4. import android.content.Intent;
  5. public class MyReceiver extends BroadcastReceiver{
  6. @Override
  7. public void onReceive(Context context, Intent intent) {
  8. // 實例化Intent
  9. Intent i = new Intent();
  10. // 在新的任務中啟動Activity
  11. i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  12. // 設置Intent啟動的組件名稱
  13. i.setClass(context, SecondActivity.class);
  14. // 啟動Activity顯示通知
  15. context.startActivity(i);
  16. }
  17. }

SecondActivity.java

  1. package com.android.notification;
  2. import android.app.Activity;
  3. import android.app.Notification;
  4. import android.app.NotificationManager;
  5. import android.app.PendingIntent;
  6. import android.content.Intent;
  7. import android.os.Bundle;
  8. import android.view.View;
  9. import android.view.View.OnClickListener;
  10. import android.widget.Button;
  11. public class SecondActivity extends Activity {
  12. // 聲明按鈕
  13. private Button cancelBtn;
  14. // 聲明Notification
  15. private Notification notification ;
  16. // 聲明NotificationManager
  17. private NotificationManager mNotification;
  18. // Notification標示ID
  19. private static final int ID = 1;
  20. @Override
  21. public void onCreate(Bundle savedInstanceState) {
  22. super.onCreate(savedInstanceState);
  23. setContentView(R.layout.second);
  24. // 實例化按鈕
  25. cancelBtn = (Button)findViewById(R.id.cancelButton2);
  26. // 獲得NotificationManager實例
  27. String service = NOTIFICATION_SERVICE;
  28. mNotification = (NotificationManager)getSystemService(service);
  29. // 實例化Notification
  30. notification = new Notification();
  31. // 設置顯示圖標,該圖標會在狀態欄顯示
  32. int icon = notification.icon = android.R.drawable.stat_notify_chat;
  33. // 設置顯示提示信息,該信息也會在狀態欄顯示
  34. String tickerText = "Test Notification";
  35. // 顯示時間
  36. long when = System.currentTimeMillis();
  37. notification.icon = icon;
  38. notification.tickerText = tickerText;
  39. notification.when = when;
  40. // 實例化Intent
  41. Intent intent = new Intent(this, MainActivity.class);
  42. // 獲得PendingIntent
  43. PendingIntent pi = PendingIntent.getActivity(this, 0, intent, 0);
  44. // 設置事件信息
  45. notification.setLatestEventInfo(this, "消息", "Hello Android", pi);
  46. // 發出通知
  47. mNotification.notify(ID, notification);
  48. // 為按鈕添加監聽器
  49. cancelBtn.setOnClickListener(cancelListener);
  50. }
  51. // 取消通知監聽器
  52. private OnClickListener cancelListener = new OnClickListener() {
  53. @Override
  54. public void onClick(View v) {
  55. // 取消通知
  56. mNotification.cancel(ID);
  57. }
  58. };
  59. }
Copyright © Linux教程網 All Rights Reserved