现在的位置: 首页 > 综合 > 正文

Notification及在Notification里点击操作发送广播

2018年02月10日 ⁄ 综合 ⁄ 共 1876字 ⁄ 字号 评论关闭

Notification通知是在状态栏里显示的信息

一、Notification的实现:三步实现通知

1、定义通知:

Notification mNotification = new Notification(R.drawable.logo,"后台搜索中...",System.currentTimeMillis());
第一个参数代表图标、第二个参数代表提示的内容、第三个参数是指要显示的时间,一般是当即显示,故填入系统当前时间     

2、从系统服务中获取通知管理器:

NotificationManager mNF = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);

3、发送通知:

mNF.notify(R.string.app_name, mNotification);

第一个参数为通知的ID,第二个参数为要发送的通知

4、取消通知:一般在onDestroy()函数里取消

mNF.cancel(R.string.app_name);//根据通知的ID取消

二、复杂点的通知,可在通知里操作,发送广播:

1、定义通知:同上

2、定义一个要广播出去的意图intent:

Intent intent = new Intent(FILE_NOTIFICATION);//这个意图的action为FILE_NOTIFICATION

3、意图传递的参数

 intent.putExtra("notification", "当通知还存在,说明搜索未完成,可以在这里触发一个事件,当点击通知回到Activity之后,可以弹出一个框,提示是否取消搜索!");

4、设置这个intent需要通过广播方式发送出去

PendingIntent mPI = PendingIntent.getBroadcast(this,0,intent,0);

5、设置通知列表里的显示情况,以及点击后将发送PendingIntent对象
mNotification.setLatestEventInfo(this, "在"+SearchBroadCast.mServiceSearchPath+"下搜索", "搜索关键字为"+SearchBroadCast.mServiceKeyword+"【点击可取消搜索】", mPI);
第一个参数:上下文;第二个参数:标题;第三个参数内容;第四个参数:点击后将发送的PendingIntent对象。】

6、发送通知:同上     

通知里点击后的操作:

1、注册一个广播接收器:

IntentFilter mFilter = new IntentFilter();

mFilter.addAction(FileService.FILE_NOTIFICATION);//呵呵:这个同通知里的意图Intent的action是不是一致

FileBroadcast mFileBroadcast = new FileBroadcast();

this.registerReceiver(mFileBroadcast, mFilter);

2、在广播接收器里处理:

class FileBroadcast extends BroadcastReceiver
 {
    //该方法用于实现接收到广播的具体处理,其中参数intent:为接受到的intent
		@Override
		public void onReceive(Context context, Intent intent) 
		{
			//获取意图的动作
			mAction = intent.getAction();			
			if(FileService.FILE_NOTIFICATION.equals(mAction))
			{//点击通知回到当前Activity,读取其中信息
				String mNotification = intent.getStringExtra("notification");
				
				//通过Toast把通知intent里的参数显示出来
				Toast.makeText(MainActivity.this, mNotification, Toast.LENGTH_LONG).show();
				
				//进行响应的处理
				searchCompletedDialog("你确定要取消搜索吗?");
			}
		}
 }

 三、广播接收器可以动态注册如上,也可以在manifest注册文件里注册

<receiver android:name=".MyReceiver">  
        <intent-filter>  
            <action android:name="ELITOR_CLOCK" />  
        </intent-filter>  
</receiver> 

 

抱歉!评论已关闭.