国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android中通過Notification&NotificationManager實現消息通知

2020-04-11 11:22:04
字體:
來源:轉載
供稿:網友

notification是一種讓你的應用程序在沒有開啟情況下或在后臺運行警示用戶。它是看不見的程序組件(Broadcast Receiver,Service和不活躍的Activity)警示用戶有需要注意的事件發生的最好途徑。

  1、新建一個android項目

    我新建項目的 minSdkVersion="11",targetSdkVersion="19"。也就是支持最低版本的3.0的。

  2、習慣性地打開項目清單文件AndroidManifest.xml,添加一個權限:<uses-permission android:name="android.permission.VIBRATE"/> 不添加不行的。

  3、在布局activity_main.xml中添加幾個按鈕,樣子就大概這樣,垂直排版的LinearLayout

具體代碼

<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:paddingBottom="@dimen/activity_vertical_margin"  android:paddingLeft="@dimen/activity_horizontal_margin"  android:paddingRight="@dimen/activity_horizontal_margin"  android:paddingTop="@dimen/activity_vertical_margin"  android:orientation="vertical"  tools:context=".MainActivity" >    <Button       android:id="@+id/btn_01"      android:layout_width="match_parent"      android:layout_height="wrap_content"      android:text="3.0以前版本的notification,用新的吧"      android:onClick="click"      />    <Button       android:id="@+id/btn_02"      android:layout_width="match_parent"      android:layout_height="wrap_content"      android:text="大視圖文本通知"      android:onClick="click"      />    <Button       android:id="@+id/btn_03"      android:layout_width="match_parent"      android:layout_height="wrap_content"      android:text="大視圖圖片通知"      android:onClick="click"      />    <Button       android:id="@+id/btn_04"      android:layout_width="match_parent"      android:layout_height="wrap_content"      android:text="進度條通知"      android:onClick="click"      /></LinearLayout>

   

4、MainActivity中的代碼:

 package com.xin.day__notificationdemo;  import java.util.Timer;  import java.util.TimerTask;  import android.app.Activity;  import android.app.Notification;  import android.app.NotificationManager;  import android.app.PendingIntent; import android.content.Intent; import android.graphics.BitmapFactory; import android.os.Bundle; import android.support.v.app.NotificationCompat; import android.support.v.app.NotificationCompat.BigPictureStyle; import android.support.v.app.NotificationCompat.BigTextStyle; import android.support.v.app.NotificationCompat.Builder; import android.util.Log; import android.view.View; public class MainActivity extends Activity {   //通知的唯一標識,在一個應用程序中不同的通知要區別開來   private static final int NO = x;   private static final int NO = x;   private static final int NO = x;   private static final int NO = x;   //進度條要用   private int progress = ;   @Override   protected void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.activity_main);   }   //click方法,和xml文件中的各個按鈕的onClick屬性的值要一致   public void click(View view) {     //創建NotificationManager     final NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);     //用switch語句控制四個控件     switch (view.getId()) {     case R.id.btn_: {       Notification notification = new Notification();       notification.icon = R.drawable.ic_launcher;       notification.tickerText = "有消息了。。。";       Intent intent = new Intent(this, MainActivity.class);       PendingIntent pendingIntent = PendingIntent.getActivity(this, ,           intent, PendingIntent.FLAG_UPDATE_CURRENT);       notification.setLatestEventInfo(this, ".以前的通知", "試試而已", pendingIntent);       notification.when = System.currentTimeMillis();       notification.defaults = Notification.DEFAULT_ALL;       notification.flags = Notification.FLAG_AUTO_CANCEL;       notification.number = ;       notification.vibrate = new long[]{, };       manager.notify(NO, notification);     }     break;     case R.id.btn_:{       //大視圖文本通知       //創建消息構造器,在擴展包       NotificationCompat.Builder builder = new NotificationCompat.Builder(this);       //設置當有消息是的提示,圖標和提示文字       builder.setSmallIcon(R.drawable.ic_launcher).setTicker("有新消息了");       //需要樣式       BigTextStyle style = new BigTextStyle();       style.setBigContentTitle("上課通知");//通知的標題       style.bigText("今天下午要在綜B上jsp");//通知的文本內容       //大視圖文本具體內容       style.setSummaryText("這是正常的課程安排,請各位同學按時上課");       builder.setStyle(style);       //顯示消息到達的時間,這里設置當前時間       builder.setWhen(System.currentTimeMillis());       //獲取一個通知對象       Notification notification = builder.build();       notification.flags = Notification.FLAG_AUTO_CANCEL;       //發送(顯示)通知       //notify()第一個參數id An identifier for this notification unique within your application       //get?意思說,這個通知在你的應用程序中唯一的標識符       manager.notify(NO, notification);     }     break;     case R.id.btn_:{       //大視圖圖片通知       NotificationCompat.Builder builderPic = new Builder(this);       builderPic.setSmallIcon(R.drawable.ic_launcher).setTicker("新浪體育提醒");       //進行設置       BigPictureStyle pictureStyle = new BigPictureStyle();       pictureStyle.setBigContentTitle("新浪體育 快船VS騎士 ");       pictureStyle.bigPicture(BitmapFactory.decodeResource(getResources(), R.drawable.ic_game));       pictureStyle.setSummaryText(" 快船VS騎士 天王山之戰!!!");//不要在意文字       //設置樣式       builderPic.setStyle(pictureStyle);       //設置顯示的時間       builderPic.setWhen(System.currentTimeMillis());       Notification notification = pictureStyle.build();       notification.flags = Notification.FLAG_AUTO_CANCEL;       //       manager.notify(NO, notification);     }     break;     case R.id.btn_:{       //進度條通知       final NotificationCompat.Builder builderProgress = new NotificationCompat.Builder(this);       builderProgress.setSmallIcon(R.drawable.ic_launcher).setTicker("進度條通知");       builderProgress.setProgress(, progress, false);       final Notification notification = builderProgress.build();       //發送一個通知       manager.notify(NO, notification);       //創建一個計時器       Timer timer = new Timer();       timer.schedule(new TimerTask(){         @Override         public void run() {           Log.i("progress",progress+"");           while(progress <= ){             progress ++;             try {               Thread.sleep();             } catch (InterruptedException e) {               // TODO Auto-generated catch block               e.printStackTrace();             }             //更新進度條             builderProgress.setProgress(, progress, false);             //再次通知             manager.notify(NO, builderProgress.build());           }           //計時器退出           this.cancel();           //進度條退出           manager.cancel(NO);           return;//結束方法         }       }, );     }     break;     default:       break;     }   } }

5、運行:我的虛擬機版本是4.0的(api19),按住通知左(右)滑動就可以讓通知小時了。

效果如下:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 景宁| 六枝特区| 望谟县| 垣曲县| 泸州市| 江门市| 信宜市| 竹北市| 石首市| 田阳县| 大埔区| 秦皇岛市| 于都县| 金阳县| 伽师县| 油尖旺区| 资阳市| 江源县| 渑池县| 鹿泉市| 昌乐县| 迁安市| 德州市| 丰都县| 务川| 芜湖县| 阳山县| 阳新县| 桐城市| 云安县| 会昌县| 龙泉市| 综艺| 鲜城| 南澳县| 莲花县| 达日县| 七台河市| 石嘴山市| 河北省| 柞水县|