Notification(通知) 簡單用法

Notification(通知) 是應用程序提醒用戶某件事情已經發生了的一種方式,能夠在「狀態欄」和「通知托盤」中看到它。如咱們更新程序的時候,能夠經過Notification來實現下載進度。android

Notification 能夠有如下動做來加強用戶提醒:api

1.在狀態欄中顯示圖標。ide

2.燈光:手機LED呼吸燈閃爍佈局

3.發出聲音提醒。優化

4.手機震動。ui

5.在通知托盤中顯示更多的信息this

 

一,建立Notificationspa

Notification須要使用NotificationManager來管理。NotificationManager是用來處理Notification的系統服務。能夠使用getSystemService來獲取。建立Notification有兩種方式code

第一種:使用Notification實例xml

 

    //獲取NotificationManager的引用
        final NotificationManager nManager = (NotificationManager) getSystemService(this.NOTIFICATION_SERVICE);
        //建立Notification
        //第一個參數:在狀態欄中顯示的圖標,
        //第二個參數:在狀態欄中顯示的文本
        //第三個參數:時間戳,通知顯示的時間,NotificationManager會按照這個時間來排序Notification
        final Notification notifi = new Notification(R.drawable.ic_launcher,"個人通知",System.currentTimeMillis());
        notifi.contentView=new RemoteViews(this.getPackageName(), R.layout.nview);
        
        Button btn2 = (Button) findViewById(R.id.Button01);
        btn2.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                //第一個參數:Notification的ID,若是ID相同那麼會更新以前的Notification
                //第二個參數:Notification的實例
                nManager.notify(1, notifi);
            }
        });
        

 

 

第二種:使用NotificationBuilder(推薦這種方式)

 

        //獲取NotificationManager的引用
        final NotificationManager nManager2 = (NotificationManager) getSystemService(this.NOTIFICATION_SERVICE);
        //使用Notification Builder建立通知
        Notification.Builder builder = new Notification.Builder(MainActivity.this);
        //設置通知在狀態欄中的圖標
        builder.setSmallIcon(R.drawable.ic_launcher);
        //通知在狀態欄中顯示的文本
        builder.setTicker("第一個");
        final Notification nf = builder.getNotification();
        //上面和下面這個方法所需的API版本不同。功能是同樣的
        //final Notification nf2 = builder.build();
        
        Button btn = (Button) findViewById(R.id.button1);
        btn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                nManager2.notify(1, nf);
            }
        });

 

二。Notification自定義View,點擊自定義View中的按鈕觸發事件

能夠使用RemoteViews來給Notification指定自定義View

NotificationManager nManager = (NotificationManager) getSystemService(this.NOTIFICATION_SERVICE);
Notification notifi = new Notification.Builder(this).build();
notifi.tickerText = "個人Notification";
notifi.when = System.currentTimeMillis();
notifi.icon = R.drawable.ic_launcher;
// 使用RemoteViews來給Notification指定自定義View
notifi.contentView = new RemoteViews(this.getPackageName(),
R.layout.nview);

// 點擊自定義佈局中的"打開相機「按鈕打開相機
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
PendingIntent pi = PendingIntent.getActivity(this, 1, intent, 0);
//給自定義View指定PendingIntent
notifi.contentView.setOnClickPendingIntent(R.id.button2,pi);

// 發送通知
nManager.notify(1, notifi);

 

 

nview.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="match_parent"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="打開網頁" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="打開照相機" />

    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="打開電話本" />

</LinearLayout>

 

Notification 還有更多的屬性。能夠參考API 。隨着android api 版本的不一樣。對應的方法也會有些許修改。關於Notification的手機震動和LED燈,音效等。須要在AndroidMainfest.xml 中添加 震動,閃光等權限。有些手機ROM被優化過。可能效果不正確。

相關文章
相關標籤/搜索