博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android:Notification的生成与取消
阅读量:6506 次
发布时间:2019-06-24

本文共 5288 字,大约阅读时间需要 17 分钟。

  MainActivity.java:

package com.example.notificationdemo;import android.app.Activity;import android.app.ActionBar;import android.app.Fragment;import android.app.Notification;import android.app.Notification.Builder;import android.app.NotificationManager;import android.app.PendingIntent;import android.content.Intent;import android.os.Bundle;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.Button;import android.widget.Toast;import android.os.Build;public class MainActivity extends Activity {	Button btn_cancel;	Button btn_generate;	Notification notification;	PendingIntent pintent;	Intent intent;	NotificationManager manager;// 后面要用	@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.activity_main);		btn_cancel = (Button) findViewById(R.id.btn_cancel);		btn_generate = (Button) findViewById(R.id.btn_generate);		btn_generate.setOnClickListener(new MyListener());		btn_cancel.setOnClickListener(new MyListener());	}	public class MyListener implements OnClickListener {		@Override		public void onClick(View v) {			switch (v.getId()) {			case R.id.btn_generate:				System.out.println("=========btn_generate=====");				GenerateNotification();				break;			case R.id.btn_cancel:				System.out.println("=========btn_cancel=====");				CancelNotification();				break;			}		}	}	private void GenerateNotification() {		intent = new Intent(this, SecondActivity.class);		pintent = PendingIntent.getActivity(this, 0, intent, 0);		Builder builder = new Builder(this);		builder.setSmallIcon(R.drawable.ic_launcher);		builder.setTicker("这是手记状态栏提示");		builder.setWhen(System.currentTimeMillis());		builder.setContentTitle("woshi biaoti");		builder.setContentText("标题内容我是");		builder.setContentIntent(pintent);		builder.setDefaults(Notification.DEFAULT_SOUND);		builder.setDefaults(Notification.DEFAULT_LIGHTS);		// builder.getNotification();//4.0以及以下版本用这个获取notification		Notification notification = builder.build();// 4.1以及以上版本用这个		Toast.makeText(this, "生成通知", 50).show();		manager = (NotificationManager) this				.getSystemService(NOTIFICATION_SERVICE);		manager.notify(23, notification);// 发出通知	}	private void CancelNotification() {		// if(manager.equals("")||manager==null){//不能这么判断,因为加入manager为空,那么null.equals("")肯定就会空指针异常		if (manager == null) {			Toast.makeText(this, "亲,暂时没有消息,所以无法取消", 50).show();			return;		} else {			Toast.makeText(this, "取消", 50).show();			manager.cancel(23);		}	}}

  

  SecondActivity.java

package com.example.notificationdemo;import android.app.Activity;import android.os.Bundle;public class SecondActivity extends Activity {	@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.second_act);	}}

  activity_main.xml:

  second_act.xml:

  清單文件:

  效果圖:

 

     遇到一个奇怪的事情:

如下:

package com.example.notificationdemo;import android.app.Activity;import android.app.Notification;import android.app.Notification.Builder;import android.app.NotificationManager;import android.app.PendingIntent;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.Toast;public class SecondActivity extends Activity implements OnClickListener {	Button btn;	PendingIntent pintent;	Intent intent;	NotificationManager manager;	@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.second_act);		System.out.println("second:" + Thread.currentThread().getName());		Toast.makeText(this, "second:" + Thread.currentThread().getName(), 21)				.show();		btn = (Button) findViewById(R.id.sec_generate);		Toast.makeText(this, "this is the second,begin to go back", 12).show();		btn.setOnClickListener(this);		System.out.println("第二页的,btn is onclicked");	}	@Override	public void onClick(View v) {		switch (v.getId()) {		case R.id.sec_generate:			intent = new Intent(this,MainActivity.class);			pintent = PendingIntent.getActivity(this, 0, intent, 0);//跳回第一页用			Builder builder = new Builder(this);			builder.setContentText("京东啊啊啊");			builder.setContentTitle("GO BACK");			builder.setSmallIcon(R.drawable.ic_launcher);//不设置SmallICon就没法跳转//			Notification notification = builder.build();			builder.setTicker("我是ticker");			builder.setContentIntent(pintent);			builder.setDefaults(Notification.DEFAULT_SOUND);			builder.setDefaults(Notification.DEFAULT_LIGHTS);			Notification notification = builder.build();//一定要放在setContentIntent()后			manager = (NotificationManager) this.getSystemService(NOTIFICATION_SERVICE);			Toast.makeText(this, "back to the mainactivity", 12).show();			manager.notify(1, notification);			System.out.println("=============se===========");			break;		}	}}

  其中的builder.setSmallIcon(R.drawable.ic_launcher);如果注释掉,那么就不会生成相应的通知消息。暂时没找到原因,不知道为什么。

转载地址:http://njwfo.baihongyu.com/

你可能感兴趣的文章
NB-IoT的成功商用不是一蹴而就
查看>>
九州云实战人员为您揭秘成功部署OpenStack几大要点
查看>>
1.电子商务支付方式有哪些 2.比较不同支付方式的优势劣势
查看>>
医疗卫生系统被爆漏洞,7亿公民信息泄露……
查看>>
神秘函件引发的4G+与全网通的较量
查看>>
CloudCC:智能CRM究竟能否成为下一个行业风口?
查看>>
高德开放平台推出LBS游戏行业解决方案提供专业地图平台能力支持
查看>>
追求绿色数据中心
查看>>
Web开发初学指南
查看>>
OpenStack Days China:华云数据CTO郑军分享OpenStack创新实践
查看>>
探寻光存储没落的真正原因
查看>>
高通64位ARMv8系列服务器芯片商标命名:Centriq
查看>>
中国人工智能学会通讯——融合经济学原理的个性化推荐 1.1 互联网经济系统的基本问题...
查看>>
盘点大数据商业智能的十大戒律
查看>>
戴尔为保护数据安全 推出新款服务器PowerEdge T30
查看>>
今年以来硅晶圆涨幅约达40%
查看>>
构建智能的新一代网络——专访Mellanox市场部副总裁 Gilad Shainer
查看>>
《数字视频和高清:算法和接口》一导读
查看>>
《中国人工智能学会通讯》——6.6 实体消歧技术研究
查看>>
如何在Windows查看端口占用情况及查杀进程
查看>>