程序通知栏通知的开发

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32216895/article/details/56772900

原理:

请求系统发送一个广播,在本程序接收该广播,并做一系列的操作,属于跨进程的开发

1、点击控件请求系统发送广播

public void doClick(View v) {
switch (v.getId()) {
case R.id.btn_notification:
sendNotification();// 发送通知
break;

}


2、在通知栏需要显示的通知样式

/**
* 自定义
*/
private void sendNotificationZidinyi() {
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
Builder builder = new Builder(MainActivity.this);
RemoteViews views = new RemoteViews(getPackageName(), R.layout.notification_zidinyi);
//给RemoteViews添加点击意图
Intent activityIntent = new Intent(MainActivity.this,MainActivity.class);
PendingIntent pi5 = PendingIntent.getActivity(MainActivity.this, 0, activityIntent, PendingIntent.FLAG_UPDATE_CURRENT);
views.setOnClickPendingIntent(R.id.btn_startActivity, pi5);
//给播放按钮添加点击意图
Intent broadIntent = new Intent("ACTION_SEND_BROADCAST");
PendingIntent broadCastPi = PendingIntent.getBroadcast(MainActivity.this, 0, broadIntent , Context.BIND_DEBUG_UNBIND);
views.setOnClickPendingIntent(R.id.img_player, broadCastPi);

builder.setContentTitle("")
.setTicker("自定义")
.setSmallIcon(R.drawable.small_pic)
.setContent(views )
;




Notification notifi = builder.build();
manager.notify(555,notifi);


}

3、动态注册广播接收者

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

receiver = new PlayerBroadcastReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("ACTION_SEND_BROADCAST");
registerReceiver(receiver, filter);
}



4、写一个清除通知的方法,在其生命周期结束时自行清除

private void clearNotification() {
// 单例系统服务,可重复创建
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
manager.cancel(NOTIFI_MANAGER_ID);

}

@Override
protected void onDestroy() {
// TODO Auto-generated method stub
isDoing=false;
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
manager.cancel(588);
unregisterReceiver(receiver);
super.onDestroy();
}

猜你喜欢

转载自blog.csdn.net/qq_32216895/article/details/56772900