17.安卓通知Notification

實現結果以下android

 

須要修改的地方有四個地方,app

 

 

 

實現思想,ide

1.通知的實現,使用的是通知的管理者來發布notify方法來發布,ui

2.發佈的是id和消息notification,this

3.這個消息須要使用Notification.Builder來建立,spa

4.而後建立的過程固然就是那些設置標題啦,設置顯示文本,code

  是否是振動,顯示圖片,點擊一下會不會消失,點擊一下發生什麼意圖等等的屬性xml

 

 

實現代碼對象

xmlblog

<?xml version="1.0" encoding="utf-8"?>
<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"
    tools:context="com.example.xialm.message.MainActivity"

    android:orientation="vertical">
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <Button
            android:id="@+id/button_sunny"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="晴空萬里" />

        <Button
            android:id="@+id/button_cloud"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="陰雲密佈" />

        <Button
            android:id="@+id/button_rain"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="大雨連綿" />
    </LinearLayout>



    <Button
        android:id="@+id/button_clear"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dip"
        android:text="清除Notification" />
</LinearLayout>
        

Java的邏輯代碼

package com.example.xialm.message;

import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    private Button btnclear,btncloud,btnsunny,btnrain;
    //通知管理者
    private NotificationManager nm;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btnclear = (Button)findViewById(R.id.button_clear);
        btncloud = (Button)findViewById(R.id.button_cloud);
        btnsunny = (Button)findViewById(R.id.button_sunny);
        btnrain = (Button)findViewById(R.id.button_rain);

        //系統服務都要getsystemservice,得到通知服務
        nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);

        btnclear.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                //使用設置的id號
                nm.cancel(1);
            }
        });

        btncloud.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub

                displayWeather("陰天", "天氣預報", "陰雲密佈",R.drawable.cloud,1);
            }
        });

        btnrain.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                displayWeather("雨", "天氣預報", "大雨連綿", R.drawable.rain,2);
            }
        });

        btnsunny.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                displayWeather("晴", "天氣預報", "太陽真毒奧", R.drawable.sun,3);
            }
        });
    }

    //閃爍的字是ticktext,拽下來看到的標題是title,內容,圖片
    //意思是在這裏設置好了以後,在點擊事件的時候直接調用display(衆多參數)就能夠了
    private void displayWeather(String tickerText,String title,String content,int drawable,int id){
        //一個消息建立的實例
        Notification.Builder builder = new Notification.Builder(MainActivity.this);

        //爲上面的消息配置一個樣式
        //1.小圖標
        builder.setSmallIcon(drawable);
        //2.閃爍的時候閃一下什麼
        builder.setTicker(tickerText);
        //顯示標題是什麼
        builder.setContentTitle(title);
        //顯示的內容是什麼
        builder.setContentText(content);
        //得到當前的系統時間
        builder.setWhen(System.currentTimeMillis());

        //缺省模式,所有采用默認
        //注意在這裏設置選擇了所有默認,可是默認的值中振動是被選中的,
        //因此一會還須要去mainfest中進行振動權限的打開
        //<uses-permission android:name="android.permission.VIBRATE"></uses-permission>
        builder.setDefaults(Notification.DEFAULT_ALL);

        //打開圖標以後是否是自動消失
        builder.setAutoCancel(true);

        //造一個Intent爲了傳給PendingIntent
        Intent intent = new Intent(this,MainActivity.class);
        //PendingIntent意思是未決定的行將發生的的一個Intent,是一個能夠脫離了activity存在的Intent
        //其餘的Intent存在的條件是activity仍在運行着,
        //因爲如今的用途是做爲上面彈出來的這麼一個Intent那麼他就要存在且不依附activity
        PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 0, intent, 0);

        //爲如今建立的對象進行設置Intent
        builder.setContentIntent(pendingIntent);

        //建立對象。
        Notification nn = builder.getNotification();

        //通知管理者發佈,開始進行發佈,
        // 第一個id號的設置若是是同樣的話,那麼發送一個以後再發送一個的話會重合,
        //若是不同就會疊加,即都顯示到手機的通知欄裏面,
        nm.notify(id,nn);

    }
}
相關文章
相關標籤/搜索