案例一:基本通知实例
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
// 点击按钮,发送通知
public void show(View v) {
// 创建通知的构建器
NotificationCompat.Builder builder = new NotificationCompat.Builder(
this);
// 设置标题
builder.setContentTitle("通知标题");
// 设置通知内容
builder.setContentText("通知内容");
// 设置通知的额外信息
builder.setContentInfo("额外信息");
// 设置小图标
builder.setSmallIcon(R.drawable.i3);
// 设置大图标
Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.i4);
builder.setLargeIcon(bm);
// 创建通知
Notification notification = builder.build();
// 通过系统服务,创建通知管理器
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// 发送通知:参数1:通知的唯一标识,参数2:通知对象
manager.notify(1, notification);
}
}
案例二:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
// 点击按钮,发送各种通知(大文本,大图片,InBox)
public void show(View v) {
NotificationCompat.Builder builder = new NotificationCompat.Builder(
this);
builder.setSmallIcon(R.drawable.ic_launcher);
builder.setContentTitle("通知标题");
builder.setContentText("通知内容…………");
builder.setContentInfo("额外信息");
// big text
// 创建big text样式
// NotificationCompat.BigTextStyle style = new
// NotificationCompat.BigTextStyle();
// // 设置大文本
// style.bigText("这是大文本,内容为几十万字,但是全省略了……");
// // 设置大文本标题
// style.setBigContentTitle("大文本标题");
// // 设置摘要
// style.setSummaryText("摘要");
// 设置样式
// big picture
// NotificationCompat.BigPictureStyle style = new
// NotificationCompat.BigPictureStyle();
// Bitmap bm = BitmapFactory.decodeResource(getResources(),
// R.drawable.android);
// style.bigPicture(bm);
// InBox
NotificationCompat.InboxStyle style = new NotificationCompat.InboxStyle();
for (int i = 0; i < 5; i++) {
style.addLine("啊,大海啊,全是水!");
}
builder.setStyle(style);
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
manager.notify(2, builder.build());
}
}
案例三:进度条通知
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void show(View v) {//按钮的监听事件
final NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
final NotificationCompat.Builder builder = new NotificationCompat.Builder(
this);
builder.setContentTitle("通知标题");
builder.setSmallIcon(R.drawable.ic_launcher);
Bitmap bm = BitmapFactory.decodeResource(getResources(),
R.drawable.ic_launcher);
builder.setLargeIcon(bm);
builder.setContentInfo("额外信息");
new Thread(new Runnable() {
// max:表示最大的进度值
// progress:进度条当前的进度
// indeterminate:模糊的,不明确的,设置进度条是否精确
@Override
public void run() {
// TODO Auto-generated method stub
for (int i = 0; i < 100; i++) {
// 更新进度条
builder.setProgress(100, i, true);//true:表示是不精确的进度条 false:表示是精确的进度条
// 进度条每更新一次,发送一次通知
manager.notify(1, builder.build());
try {
Thread.sleep(50);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 进度条更新完毕,设置进度为0
builder.setProgress(0, 0, false);
builder.setContentText("下载完毕!");
manager.notify(1, builder.build());
}
}).start();
}
}
案例四:点击通知跳转到另一个目标界面
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void show(View v) {
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
NotificationCompat.Builder builder = new NotificationCompat.Builder(
this);
builder.setSmallIcon(R.drawable.ic_launcher);
builder.setTicker("短暂显示一下的提示性文字");
Intent intent = new Intent(MainActivity.this, TargetActivity.class);
// 延迟意图,对intent的封装
// context:上下文
// requestCode:请求码,1
// intent:指明页面的跳转
// flags:标识符,
// FLAG_ONE_SHOT:表示返回的PendingIntent只执行一次,执行之后自动取消
// FLAG_NO_CREATE:如果PengdingIntent不存在,并不创建,返回null
// FLAG_CANCEL_CURRENT,如果PengdingIntent存在, 将其取消,创建新的PengdingIntent
// 有利于数据保持最新的,可以使用在即时聊天的通信场景
// FLAG_UPDATE_CURRENT,更新当前的PengdingIntent
PendingIntent pIntent = PendingIntent.getActivity(this, 1, intent,
PendingIntent.FLAG_ONE_SHOT);
builder.setContentIntent(pIntent);
manager.notify(1, builder.build());
}
}
目标界面:
public class TargetActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_target);
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
manager.cancel(1);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.target, menu);
return true;
}
}
案例五:自定义通知的界面
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void show(View v) {
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
NotificationCompat.Builder builder = new NotificationCompat.Builder(
this);
builder.setSmallIcon(R.drawable.ic_launcher);
Intent intent = new Intent(MainActivity.this, MusicActivity.class);
PendingIntent pIntent = PendingIntent.getActivity(this, 1, intent,
PendingIntent.FLAG_ONE_SHOT);
// 包名
// 布局文件的id
RemoteViews views = new RemoteViews(getPackageName(),
R.layout.customview);//自定义的通知的布局
// 触发延迟意图的点击事件
// viewId,触发点击事件的控件的id
// 延迟意图
views.setOnClickPendingIntent(R.id.play, pIntent);//给自定义view中的控件添加监听事件
builder.setContent(views);
manager.notify(1, builder.build());
}
}
目标界面:
public class MusicActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_music);
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
manager.cancel(1);
}
}