Notification 的使用

直接附代码:


package com.qianfeng.notification;


import android.os.Bundle;
import android.app.Activity;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.support.v4.app.NotificationCompat;
import android.view.View;
import android.widget.RemoteViews;

public class MainActivity extends Activity {
	private static final int REQUEST_CODE=1;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}
	/**
	 * 发送普通的通知
	 * @param view
	 */
    public void send(View view){
    	//创建通知对象
    	NotificationCompat.Builder builder=new NotificationCompat.Builder(MainActivity.this);
    	builder.setContentTitle("凤姐");//设置通知的标题  必须设置
    	builder.setContentText("有空吗?吃个饭");//设置通知的内容   必须设置
    	builder.setSmallIcon(R.drawable.f047);//设置通知的小图标  必须设置
    	
    	//可选属性
    	Bitmap bm=BitmapFactory.decodeResource(getResources(), R.drawable.f039);//将res下的图片转换成bitmap对象
    	builder.setLargeIcon(bm);//设置通知的大图标内容
    	builder.setContentInfo("info");//设置通知的消息info
    	builder.setWhen(System.currentTimeMillis());//设置通知的发送时间  long类型
    	
    	//创建延迟意图对象  PendingIntent   1参数 上下文 2参数 请求码 3参数标示intent对象  4标记FLAG_ONE_SHOT 标示当前对象创建一次
    	Intent intent=new Intent(MainActivity.this,ResultActivity.class);
    	PendingIntent pendingIntent=PendingIntent.getActivity(MainActivity.this, 
    					REQUEST_CODE, intent, PendingIntent.FLAG_ONE_SHOT);
    	builder.setContentIntent(pendingIntent);
    	
    	//通过系统服务获取通知管理者对象
    	NotificationManager manager=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    	//通过通知管理者对象发送通知  1参数 标示当前的通知的唯一的id  2参数 标示发送通知的对象
    	manager.notify(1, builder.build());
    }
    /**
     * 发送大通知
     * @param view
     */
    public void send_big(View view){
    	 NotificationCompat.Builder builder=new NotificationCompat.Builder(MainActivity.this);
    	 builder.setContentTitle("小强");
    	 builder.setContentText("还钱吧");
    	 builder.setSmallIcon(R.drawable.f039);
    	 
    	 
    	 //标示创建大图通知 复杂内容的样式对象
    	 NotificationCompat.InboxStyle style=new NotificationCompat.InboxStyle();
    	 String[] strs={"你咋还不还钱呢?","你快还钱吧","还不还啊","再不还揍你"}; 
    	 for(int i=0;i<strs.length;i++){
    		 style.addLine(strs[i]);//将数据源中的内容添加到大图的样式中
    	 }
    	 builder.setStyle(style);//将通知的样式设置到通知中
    	 
    	 Intent intent=new Intent(MainActivity.this,ResultActivity.class);
    	 intent.putExtra("str", "测试");
    	 PendingIntent pendingIntent=PendingIntent.getActivity(MainActivity.this, 
    			 REQUEST_CODE,intent, PendingIntent.FLAG_ONE_SHOT);
    	 builder.setContentIntent(pendingIntent);
    	 
    	 NotificationManager manager=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    	 manager.notify(1, builder.build());
    }
    /**
     * 发送带有进度条的通知
     * @param view
     */
    private NotificationManager manager;
    public void send_progress(View view){
    	final NotificationCompat.Builder builder=new NotificationCompat.Builder(MainActivity.this);
    	builder.setContentTitle("显示下载进度");
    	builder.setContentText("下载中...");
    	builder.setSmallIcon(R.drawable.f047);
    	manager=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    	new Thread(){
    		public void run() {
    			for(int i=0;i<=100;i+=5){
    				//setProgress(最大进度,当前进度,标示通知的样式  false标示具有明确进度 true没有明确进度)
    				builder.setProgress(100, i, true);
    				manager.notify(1, builder.build());//更新通知  进度没更新一次都需要通知进度条改变
    				try {
						Thread.sleep(500);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
    			}
    			builder.setContentText("下载完毕");
    			manager.notify(1, builder.build());
    		}
    	}.start();
    	
    }
    /**
     * 发送自定义通知
     * @param view
     */
    public void send_cus(View view){
    	
    	NotificationCompat.Builder builder=new NotificationCompat.Builder(MainActivity.this);
    	//将自定义的xml文件布局转换成RemoteViews对象
    	RemoteViews rv=new RemoteViews(getPackageName(),R.layout.activity_notification);
    	rv.setTextViewText(R.id.textView1, "标题");//根据指定控件的id设置内容
    	rv.setTextViewText(R.id.textView2, "内容");
    	rv.setTextColor(R.id.textView1, Color.RED);
    	rv.setImageViewResource(R.id.imageView1, R.drawable.f039);
    	builder.setContent(rv);//将自定义的通知对象进行设置
    	
    	builder.setContentTitle("自定义通知");
		builder.setSmallIcon(R.drawable.f047);
    	
    	NotificationManager manager=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    	manager.notify(1, builder.build());
    }
}
















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值