notification :以另一种UI界面形式展示出来,点击时可以对其应用做处理。
其常用的一些基本属性:setSmallIcon()设置图标 、setContentTitle()设置题目、setContentText()设置内容、setAutoCancel()设置点击后是否自动销毁、setTicker()设置通知时的滚动文本
1、构造通知、跳转界面
// 构造通知界面
NotificationCompat.Builder builder = new NotificationCompat.Builder(
NotifyActivity.this);
builder.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle(getString(R.string.hello_world))
.setContentText(getString(R.string.hint_text))
.setAutoCancel(true) // 点击跳转后自动销毁
.setTicker(getString(R.string.hello_world)); // 设置滚动文本
// 通知行为(点击后能进入应用界面)
Intent intent = new Intent(NotifyActivity.this,
Marquee_Test.class);
PendingIntent pendingIntent = PendingIntent.getActivity(
NotifyActivity.this, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(pendingIntent);
// 发送通知
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
manager.notify(1, builder.build()); // id不变则只显示一个,若id变化则可以重复显示多个
2、导航功能,返回应用首页
此时若点击返回时则直接跳出应用,若想其不退出应用还应在manifest中注册其父类路径(尽量使用4.1以上版本的模拟器,以下容易出错。)
android:parentActivityName="com.example.layout.LayoutAll">
android:name=
"android.support.PARENT_ACTIVITY"
android:value=
"com.example.layout.LayoutAll" />
此时只改变上方通知行为部分即可
Intent intent = new Intent(NotifyActivity.this,
Marquee_Test.class); //要跳转的界面
TaskStackBuilder taskStackBuilder = TaskStackBuilder
.create(NotifyActivity.this);
taskStackBuilder.addParentStack(Marquee_Test.class); //参数为跳转界面
taskStackBuilder.addNextIntent(intent);
PendingIntent pendingIntent = taskStackBuilder
.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(pendingIntent);
3、BigView 系统按钮监听事件
此时也只用改变上方通知行为部分即可
//播放部分
Intent playIntent = new Intent(NotifyActivity.this,
PlayMusicService.class);
playIntent.setAction("1");
playIntent.putExtra(
"PATH","file://"+ Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC)
+ "/wy.mp3");
playIntent.putExtra("FLAG", 1);
PendingIntent playPending = PendingIntent.getService(
NotifyActivity.this, 0, playIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
//暂停部分
Intent pauseIntent = new Intent(NotifyActivity.this,
PlayMusicService.class);
pauseIntent.putExtra("PATH","file://"+ Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC)+ "/wy.mp3"); //将播放文件传递到服务端
pauseIntent.setAction("2"); //此时必须设置action,不然不能播放,单个控件时可以不用设置,参数自定义
pauseIntent.putExtra("FLAG", 2); //判断播放、暂停标记
PendingIntent pausePending = PendingIntent.getService(
NotifyActivity.this, 0, pauseIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
builder.addAction(R.drawable.bg_actionbar, "播放", playPending); //系统添加按钮控件
builder.addAction(R.drawable.bg_actionbar, "暂停", pausePending);
4、自定义通知界面
NotificationCompat.Builder builder = new NotificationCompat.Builder(
NotifyActivity.this);
builder.setSmallIcon(R.drawable.ic_launcher); //此条件必须设置,不然不能显示
builder.setTicker("开始播放音乐");
RemoteViews view = new RemoteViews(getPackageName(), R.layout.notify_play_music_layout); //自定义布局
builder.setContent(view);
Intent playIntent = new Intent(NotifyActivity.this,
PlayMusicService.class); //启动服务
playIntent.setAction("1");
playIntent.putExtra(
"PATH","file://"+ Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC)
+ "/wy.mp3");
playIntent.putExtra("FLAG", 1);
PendingIntent playPending = PendingIntent.getService(
NotifyActivity.this, 0, playIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
view.setOnClickPendingIntent(R.id.music_play_img, playPending); //设置监听事件
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
manager.notify(4, builder.build());