Android_Notification

xml文件:

<RelativeLayout 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.notificationdemo.MainActivity" >
    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:gravity="center_horizontal"
        >
        <Button 
            android:id="@+id/send_btn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="send Message"/>
        <Button 
            android:id="@+id/cancel_btn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="cancel Message"
            />
    </LinearLayout>
</RelativeLayout>

源代码:

package com.example.notificationdemo;

import android.app.Activity;
import android.app.Notification;
import android.app.Notification.Builder;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

/**
 * Notification是显示在手机状态栏的消息(手机状态栏位于手机最顶端),代表一种全局效果的通知 通知栏的内容:图标,标题,内容,时间,点击后响应
 * 如何实现通知栏: 获取notificationManager 显示通知栏:notify(id,notification) 取消通知栏:cancel(id)
 * 构造Notification并设置显示内容 通知栏通知可以设置声音提示,指示灯以及震动效果,后两者注意需添加权限
 * 
 * 
 * @author Administrator
 *
 */
public class MainActivity extends Activity implements OnClickListener {

    private Button send;
    private Button cancel;
    private NotificationManager manager;
    private int NOTIFICATION_ID;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        send = (Button) findViewById(R.id.send_btn);
        cancel = (Button) findViewById(R.id.cancel_btn);
        send.setOnClickListener(this);
        cancel.setOnClickListener(this);
        manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);//系统常用服务
    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
        case R.id.send_btn:
            sendNotification();
            break;
        case R.id.cancel_btn:
            manager.cancel(NOTIFICATION_ID);//取消发送的通知
            break;
        }
    }

    /**
     * 构造notification并发送到通知栏
     */
    private void sendNotification() {
        // TODO Auto-generated method stub
        Intent intent = new Intent(this, MainActivity.class);
        PendingIntent pintent = PendingIntent.getActivity(this, 0, intent, 0);
        Builder builder = new Notification.Builder(this);
        builder.setSmallIcon(R.drawable.ic_launcher);// 设置图标
        builder.setTicker("hello");// 设置手机状态栏的提示
        // 拖拽开手机状态栏提示的内容
        builder.setWhen(System.currentTimeMillis());// 设置时间
        builder.setContentTitle("通知");// 设置标题
        builder.setContentText("内容");// 设置内容
        builder.setContentIntent(pintent);// 设置点击之后的响应,意图

        /*
         * builder.setDefaults(Notification.DEFAULT_SOUND);//设置声音
         * builder.setDefaults(Notification.DEFAULT_LIGHTS);//设置指示灯
         * builder.setDefaults(Notification.DEFAULT_VIBRATE);//设置震动
         */
        builder.setDefaults(Notification.DEFAULT_ALL);
        Notification notification = builder.getNotification();// 4.1以下
        // builder.build();//4.1及以上
        manager.notify(NOTIFICATION_ID, notification);//发送通知到通知栏
    }

}
原文地址:https://www.cnblogs.com/fangg/p/5583696.html