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);

    }
}
相关文章
相关标签/搜索