热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android基础------通知栏

前言:Android通知栏提示笔记通知几乎是每一款app都拥有的功能1.发送通知发送一个通知栏必须用到两个类:NotificationManager、Notification。Noti

前言:Android通知栏提示笔记

通知几乎是每一款app都拥有的功能

1.发送通知

发送一个通知栏必须用到两个类:  NotificationManager 、 Notification。

NotificationManager :  是状态栏通知的管理类,负责发通知、清楚通知等。

NotificationManager 是一个系统Service,必须通过 getSystemService()方法来获取。

视图文件, xml:

<Button
android:text
="发送通知"
android:onClick
="test_2"
android:layout_width
="match_parent"
android:layout_height
="wrap_content" />
<Button
android:text
="下载通知"
android:onClick
="test_3"
android:layout_width
="match_parent"
android:layout_height
="wrap_content" />

 

方法:

//===========================发通知==============================//
//定义一个NotifactionManager对象
private NotificationManager manager;
//设置日期格式
private SimpleDateFormat sdf=new SimpleDateFormat("HH:mm:ss");

public void test_2(View view){
//获取NotifactionManager对象
manager=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
//构建一个Notifaction的Builder对象
Notification.Builder builder=new Notification.Builder(this);
//设置通知相关信息
builder.setTicker("你有一条新的通知");//设置信息提示
builder.setSmallIcon(R.mipmap.ic_launcher);//设置通知提示图标
builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.user2));//设置图标
builder.setContentTitle("部门通知");//设置标题
builder.setContentText("今天中午一点在报告厅一开部门会议,"+sdf.format(new Date()));//设置文本
builder.setAutoCancel(true);//查看后自动取消
builder.setWhen(SystemClock.currentThreadTimeMillis());//什么时候发出的通知
builder.setDefaults(Notification.DEFAULT_LIGHTS);//消息提示模式

//设置震动规律,(第一个参数: 振动前等待的时间,第二个参数: 第一次振动的时长、以此类推 )
builder.setVibrate(new long[]{1000,2000,1000,3000});
//builder.setSound(); //设置声音
//自定义声音
//builder.setSound(Uri.parse("file:///sdcard/notification/ringer.mp3"));
//设置灯
builder.setLights(Color.GREEN,1000,1000);

//设置点击通知后执行的动作
Intent intent=new Intent(this,NewFileActivity.class);
intent.putExtra(
"message","今天中午一点在报告厅一开部门会议,请大家准参加,通知发布时间:"+sdf.format(new Date()));
//用当前时间充当通知的id,这里是为了区分不同的通知,如果是同一个id,前者就会被后者覆盖
int requestId=(int) new Date().getTime();
//第一个参数连接上下文的context
// 第二个参数是对PendingIntent的描述,请求值不同Intent就不同
// 第三个参数是一个Intent对象,包含跳转目标
// 第四个参数有4种状态
PendingIntent pendingIntent=PendingIntent.getActivity(this,requestId,intent,PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(pendingIntent);

//发出通知,参数是(通知栏的id,设置内容的对象)
manager.notify(requestId,builder.build());
}

 

图解:

 

 

对 NotificationManager 、 Notification更详细的内容

 

 2.下载通知

demo:

 //发送一个下载通知
Notification.Builder builder;
public void test_3(View view){
manager
=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
builder
=new Notification.Builder(this);

builder.setTicker(
"文件开始下载");
builder.setSmallIcon(R.mipmap.ic_launcher);
builder.setContentTitle(
"文件下载");
builder.setContentText(
"文件正在下载中......");
builder.setWhen(SystemClock.currentThreadTimeMillis());
builder.setDefaults(Notification.DEFAULT_LIGHTS);
//消息提示模式
builder.setProgress(100,0,false);

//模拟正在执行下载
new Thread(new Runnable() {
@Override
public void run() {
for (int i=1;i<=100;i++){
builder.setProgress(
100, i, false);
if(i==100)
builder.setContentText(
"文件下载完毕!");
manager.notify(
1, builder.build());
SystemClock.sleep(
100);//模拟下载
}
manager.cancel(
1);
}
}).start();

}

 

 


推荐阅读
  • javax.mail.search.BodyTerm.matchPart()方法的使用及代码示例 ... [详细]
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • 本文介绍如何在 Android 中自定义加载对话框 CustomProgressDialog,包括自定义 View 类和 XML 布局文件的详细步骤。 ... [详细]
  • 在分析Android的Audio系统时,我们对mpAudioPolicy->get_input进行了详细探讨,发现其背后涉及的机制相当复杂。本文将详细介绍这一过程及其背后的实现细节。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • Android开发技巧:使用IconFont减少应用体积
    本文介绍如何在Android应用中使用IconFont来显示图标,从而有效减少应用的体积。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 【问题】在Android开发中,当为EditText添加TextWatcher并实现onTextChanged方法时,会遇到一个问题:即使只对EditText进行一次修改(例如使用删除键删除一个字符),该方法也会被频繁触发。这不仅影响性能,还可能导致逻辑错误。本文将探讨这一问题的原因,并提供有效的解决方案,包括使用Handler或计时器来限制方法的调用频率,以及通过自定义TextWatcher来优化事件处理,从而提高应用的稳定性和用户体验。 ... [详细]
  • 在Android开发中,当TextView的高度固定且内容超出时,可以通过设置其内置的滚动条属性来实现垂直滚动功能。具体来说,可以通过配置`android:scrollbars="vertical"`来启用垂直滚动,确保用户能够查看完整的内容。此外,为了优化用户体验,建议结合`setMovementMethod(ScrollerMovementMethod.getInstance())`方法,使滚动操作更加流畅和自然。 ... [详细]
  • 在Ubuntu系统中安装Android SDK的详细步骤及解决“Failed to fetch URL https://dlssl.google.com/”错误的方法
    在Ubuntu 11.10 x64系统中安装Android SDK的详细步骤,包括配置环境变量和解决“Failed to fetch URL https://dlssl.google.com/”错误的方法。本文详细介绍了如何在该系统上顺利安装并配置Android SDK,确保开发环境的稳定性和高效性。此外,还提供了解决网络连接问题的实用技巧,帮助用户克服常见的安装障碍。 ... [详细]
  • 本文介绍了Java中的com.sun.codemodel.JBlock._continue()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 在安装并配置了Elasticsearch后,我在尝试通过GET /_nodes请求获取节点信息时遇到了问题,收到了错误消息。为了确保请求的正确性和安全性,我需要进一步排查配置和网络设置,以确保Elasticsearch集群能够正常响应。此外,还需要检查安全设置,如防火墙规则和认证机制,以防止未经授权的访问。 ... [详细]
author-avatar
暗淡的天2004_976
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有