zoukankan      html  css  js  c++  java
  • android:Notification实现状态栏的通知

    在使用手机时,当有未接来电或者新短消息时,手机会给出响应的提示信息,这些提示信息一般会显示到手机屏幕的状态栏上。

    Android也提供了用于处理这些信息的类,它们是Notification和NotificationManager。

    当中,Notification代表的是具有全局效果的通知,而NotificationManager则是用于发送Notification通知的系统服务。

    使用Notification和NotificationManager类发送和显示通知也比較简单,大致能够分为下面四个步骤

    (1)调用getSystemService() 方法获取系统的NotificationManager服务

    (2)创建一个Notification对象,并为其设置各种属性

    (3)为Notification对象设置事件信息

    (4)通过NotificationManager类的notify()方法发送Notification通知

    以下通过一个实例说明和使用Notification在状态栏上显示通知

    国际惯例

    执行结果:

    布局文件就不发了 线性垂直布局 两个button

    MainActivity.class

    package com.example.notification;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.app.Notification;
    import android.app.Notification.Builder;
    import android.app.NotificationManager;
    import android.app.PendingIntent;
    import android.content.Context;
    import android.content.Intent;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    
    public class MainActivity extends Activity implements OnClickListener{
    	private NotificationManager manager;
    	private Button button1;
    	private Button button2;
    	private int Notification_ID;
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		manager=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    		button1=(Button) findViewById(R.id.button1);
    		button2=(Button) findViewById(R.id.button2);
    		button1.setOnClickListener(this);
    		button2.setOnClickListener(this);
    	}
    	@Override
    	public void onClick(View v) {
    		// TODO Auto-generated method stub
    		switch(v.getId()){
    		case R.id.button1:{
    			showNotification();
    			break;
    		}
    		case R.id.button2:{
    			manager.cancel(Notification_ID);
    			break;
    		}
    		}
    	}
    	private void showNotification() {
    		// TODO Auto-generated method stub
    		Notification.Builder builder=new Builder(this);
    		builder.setSmallIcon(R.drawable.ic_launcher);//设置图标
    		builder.setTicker("通知来啦");//手机状态栏的提示
    		builder.setContentTitle("我是通知标题");//设置标题
    		builder.setContentText("我是通知内容");//设置通知内容
    		builder.setWhen(System.currentTimeMillis());//设置通知时间
    		Intent intent=new Intent(this,MainActivity.class);
    		PendingIntent pendingIntent=PendingIntent.getActivity(this, 0, intent, 0);
    		builder.setContentIntent(pendingIntent);//点击后的意图
    		builder.setDefaults(Notification.DEFAULT_LIGHTS);//设置指示灯
    		builder.setDefaults(Notification.DEFAULT_SOUND);//设置提示声音
    		builder.setDefaults(Notification.DEFAULT_VIBRATE);//设置震动
    		Notification notification=builder.build();//4.1以上。下面要用getNotification()
    		manager.notify(Notification_ID, notification);
    	}
    
    }
    

    上面代码中设置的指示灯和震动,因为程序中要訪问系统的指示灯和振动器 所以要在AndroidManifest.xml中声明使用权限

        <uses-permission android:name="android.permission.VIBRATE" />
        <uses-permission android:name="android.permission.FLASHLIGHT" />

    希望对你有所帮助。

    渣渣学习中....

  • 相关阅读:
    H5系列之drag拖放
    H5系列之contenteditable
    H5系列之新input
    利用css3和js实现旋转木马图片小demo
    利用css3实现照片列表展开小demo
    reduce()、filter()、map()、some()、every()、...展开属性
    ES6,ES7,ES8,ES9,ES10新特性
    Web Components 是什么?它为什么对我们这么重要?
    vscode常用快捷键以及插件
    使用for..in时会遍历对象原型中的自定义属性
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/7298485.html
Copyright © 2011-2022 走看看