實現結果以下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); } }