Notification
是个进程间的通讯
手机状态栏的提示.出现在桌面通知栏里,他不在我们的App里,而是由SystemUI进程显示的提示.所以让另外一个系统的进程SystemUI帮我们显示一个通知栏提醒.
不多说上代码
属性配置
主要代码
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button button;
private Button button2;
private NotificationManager notificationManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
button = (Button) findViewById(R.id.button);
button.setOnClickListener(this);
button2 = (Button) findViewById(R.id.button2);
button2.setOnClickListener(this);
}
/**
* 让另外一个系统的进程SystemUI帮我们显示一个通知栏提醒
* 进程间的通讯
*
* @param v
*/
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button:
//进程间通信.主要是把一个动作交给另外一个应用程序来做的意图,就用PendingIntent包裹一下.
//pendingIntent,可以打开一个四大组件,用其静态方法,get....
//getActivity,1 上下文,2 请求码用不到就为0,3 意图对象,4 指定其点击后的状态标识
Intent intent = new Intent();
intent.setAction(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel://110"));
// Intent intent = new Intent(this,JumpActivity.class);//跳转到指定的Activity,不用StartActivity.
PendingIntent pendingIntent= PendingIntent.getActivity(this,0,intent,PendingIntent.FLAG_UPDATE_CURRENT);
//获取系统的通知服务,上面的Intent操作就是用户点击通知栏时,自动进入拨号界面,
notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
//直接new出来,该方式在安卓3.0以后已经过时了
// Notification notification=new Notification();
//使用链式调用的方法,创建Notification对象的同时往里面进行设置,是主流的创建方式,Builder的参数是上下文.
Notification notification = new Notification.Builder(this)
//设置通知栏的标题
.setContentTitle("你中奖啦")
//设置通知栏的通知内容
.setContentText("快来110 去领取!!!")
//设置通知栏的图片(就是通知一来,在显示电量那一行出现的小图标)
.setSmallIcon(R.mipmap.ic_launcher)
//设置通知栏的大图片(就是通知栏拉下来显示的图标)
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher))
//设置通知栏被点击后会执行的意图(比如跳转到指定的activity,比如打电话等等)
.setContentIntent(pendingIntent)
//当通知栏提示被点击执行时,通知栏会消失在桌面,不设置此方法,默认通知栏提示被点击后依然存在.所以必用此方法.
.setAutoCancel(true)
// .setSound(Uri.parse("")) //设置通知栏提示到来时的声音是什么.
//设置当通知栏提示到来时,手机每一次震动的时长.使用此功能记着加权限.
// .setVibrate(new long[]{100,200,300}) //不设置没有震动
// 使用系统默认声音,震动,led灯等设置
// .setDefaults(Notification.DEFAULT_ALL)
.build();
//FLAG_NO_CLEAR 使通知栏提示取消不掉,一直存在. FLAG_Auto_CLEAR 通知栏提示只要被点击一次就不会存在.
notification.flags=Notification.FLAG_NO_CLEAR;
//让通知显示在状态栏里.参数1,给通知起的ID,方便对其单独的操作(比如用cancel把指定通知取消掉) 参数2,就是Notification对象.
notificationManager.notify(1, notification);
break;
case R.id.button2:
//使用NotificationManager对象,取消掉指定int标识的通知提示.
notificationManager.cancel(1);
break;
}
}
}