您的位置:首页 > 其它

Notification 的使用

2015-07-27 17:42 344 查看
直接附代码:

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());
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: