Android 消息通知
Android 消息通知
文章目录
- Android 消息通知
- 1. Toast
- 2. AlertDialog
- 2.1 普通对话框
- 2.2 带列表的对话框
- 2.3 带单选按钮的对话框
- 2.4 带多选按钮的对话框
- 3. Notification
- 4. BroadcastReciver
1. Toast
底部弹出消息框。
基本用法:(写法比较固定)
Context context = getApplicationContext();
CharSequence text = "Hello toast!";
int duration = Toast.LENGTH_SHORT;Toast.makeText(context, text, duration).show();
- context:上下文对象。固定写法。
- text:提示文字。
- duration:显示时间,值为
Toast.LENGTH_SHORT
或Toast.LENGTH_LONG
。
学习的时候好奇了下这个组件名字的由来,stackoverflow中看到了这么一段故事,还挺有趣的:
An ex-Microsoft employee of Google is credited with coining the term during the development of MSN Messenger, since Messenger’s small notification windows slide upward into view, like toast popping out of a toaster
2. AlertDialog
对话框,有以下几个部分组成:
2.1 普通对话框
样式如下:
举例代码如下:
package com.mingrisoft;import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;public class MainActivity extends AppCompatActivity {private boolean[] checkedItems;//记录各列表项的状态private String[] items;//各列表项要显示的内容@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button1 = (Button) findViewById(R.id.button1); // 获取“显示带取消、确定按钮的对话框”按钮// 为“显示带取消、确定按钮的对话框”按钮添加单击事件监听器button1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//创建对话框对象AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create();alertDialog.setIcon(R.drawable.advise); //设置对话框的图标alertDialog.setTitle("乔布斯:"); //设置对话框的标题alertDialog.setMessage("活着就是为了改变世界,难道还有其他原因吗?"); //设置要显示的内容//添加取消按钮alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "否", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this, "您单击了否按钮", Toast.LENGTH_SHORT).show();}});//添加确定按钮alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "是", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this, "您单击了是按钮 ", Toast.LENGTH_SHORT).show();}});alertDialog.show(); //显示对话框}});}
}
2.2 带列表的对话框
举例代码如下:
package com.mingrisoft;import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;public class MainActivity extends AppCompatActivity {private boolean[] checkedItems;//记录各列表项的状态private String[] items;//各列表项要显示的内容@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button2 = (Button) findViewById(R.id.button2); // 获取“显示带列表的对话框”按钮button2.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//创建名言字符串数组final String[] items = new String[]{"当你有使命,它会让你更专注", "要么出众,要么出局", "活着就是为了改变世界","求知若饥,虚心若愚"};//创建列表对话框对象AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);builder.setIcon(R.drawable.advise1); //设置对话框的图标builder.setTitle("请选择你喜欢的名言:"); //设置对话框的标题//添加列表项builder.setItems(items, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this,"您选择了" + items[which], Toast.LENGTH_SHORT).show();}});builder.create().show(); // 创建对话框并显示}});}
}
2.3 带单选按钮的对话框
举例代码如下:
package com.mingrisoft;import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;public class MainActivity extends AppCompatActivity {private boolean[] checkedItems;//记录各列表项的状态private String[] items;//各列表项要显示的内容@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button3 = (Button) findViewById(R.id.button3); // 获取“显示带单选列表项的对话框”按钮button3.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//创建名字字符串数组final String[] items = new String[]{"扎克伯格", "乔布斯", "拉里.埃里森", "安迪.鲁宾", "马云"};// 显示带单选列表项的对话框AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);builder.setIcon(R.drawable.advise2); //设置对话框的图标builder.setTitle("如果让你选择,你最想做哪一个:"); //设置对话框的标题builder.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this,"您选择了" + items[which], Toast.LENGTH_SHORT).show(); //显示选择结果}});builder.setPositiveButton("确定", null); //添加确定按钮builder.create().show(); // 创建对话框并显示}});}
}
2.4 带多选按钮的对话框
举例代码如下:
package com.mingrisoft;import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;public class MainActivity extends AppCompatActivity {private boolean[] checkedItems;//记录各列表项的状态private String[] items;//各列表项要显示的内容@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 获取“显示带多选列表项的对话框”按钮Button button4 = (Button) findViewById(R.id.button4); button4.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {checkedItems = new boolean[]{false, true, false, true, false}; //记录各列表项的状态//各列表项要显示的内容items = new String[]{"开心消消乐", "球球大作战", "欢乐斗地主", "梦幻西游", "超级玛丽"};// 显示带单选列表项的对话框AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);builder.setIcon(R.drawable.advise2); //设置对话框的图标builder.setTitle("请选择您喜爱的游戏:"); //设置对话框标题builder.setMultiChoiceItems(items, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which, boolean isChecked) {checkedItems[which] = isChecked; //改变被操作列表项的状态}});//为对话框添加“确定”按钮builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {String result = "";for (int i = 0; i < checkedItems.length; i++) {if (checkedItems[i]) { //当选项被选择时result += items[i] + "、"; //将选项的内容添加到result中}}//当result不为空时,通过消息提示框显示选择的结果if (!"".equals(result)) {result = result.substring(0, result.length() - 1); //去掉最后面添加的“、”号Toast.makeText(MainActivity.this,"您选择了[ " + result + " ]", Toast.LENGTH_LONG).show();}}});builder.create().show(); // 创建对话框并显示}});}
}
3. Notification
在状态栏显示通知。
基本步骤:
获取通知管理器
final NotificationManager notificationManager =(NotificationManager) getSystemService(NOTIFICATION_SERVICE);
创建通知对象
Notification.Builder notification = new Notification.Builder(this); // 创建一个Notification对象
设置通知的属性
// 设置打开该通知,该通知自动消失 notification.setAutoCancel(true); // 设置通知的图标 notification.setSmallIcon(R.drawable.packet); // 设置通知内容的标题 notification.setContentTitle("奖励百万红包!!!"); // 设置通知内容 notification.setContentText("点击查看详情!"); //设置使用系统默认的声音、默认震动 notification.setDefaults(Notification.DEFAULT_SOUND|Notification.DEFAULT_VIBRATE; //设置发送时间 notification.setWhen(System.currentTimeMillis()); // 创建一个启动其他Activity的Intent
创建
Intent
,用以创建PendingIntent
用以用户点击通知后启动Activity
// 创建一个启动其他Activity的Intent Intent intent = new Intent(MainActivity.this, DetailActivity.class); PendingIntent pi = PendingIntent.getActivity(MainActivity.this, 0, intent, 0); //设置通知栏点击跳转 notification.setContentIntent(pi);
发送通知
notificationManager.notify(NOTIFYID, notification.build());
举例:
package com.mingrisoft;import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;public class MainActivity extends Activity {final int NOTIFYID = 0x123; //通知的ID@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//获取通知管理器,用于发送通知final NotificationManager notificationManager =(NotificationManager) getSystemService(NOTIFICATION_SERVICE);Notification.Builder notification = new Notification.Builder(this); // 创建一个Notification对象// 设置打开该通知,该通知自动消失notification.setAutoCancel(true);// 设置通知的图标notification.setSmallIcon(R.drawable.packet);// 设置通知内容的标题notification.setContentTitle("奖励百万红包!!!");// 设置通知内容notification.setContentText("点击查看详情!");//设置使用系统默认的声音、默认震动notification.setDefaults(Notification.DEFAULT_SOUND| Notification.DEFAULT_VIBRATE);//设置发送时间notification.setWhen(System.currentTimeMillis());// 创建一个启动其他Activity的IntentIntent intent = new Intent(MainActivity.this, DetailActivity.class);PendingIntent pi = PendingIntent.getActivity(MainActivity.this, 0,intent,0);//设置通知栏点击跳转notification.setContentIntent(pi);//发送通知notificationManager.notify(NOTIFYID, notification.build());}
}
4. BroadcastReciver
广播接收器,借助Intent携带数据发送广播,由BroadcastReciver接收并处理。
发送广播代码:
Intent intent=new Intent(); //创建Intent对象
intent.setAction("动作名"); //为Intent添加动作com.mingrisoft
sendBroadcast(intent); //发送广播
创建一个广播接收器举例:
package com.mingrisoft;import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;public class MyReceiver extends BroadcastReceiver {private static final String action1="com.mingrisoft";//声明第一个动作private static final String action2="mingrisoft"; //声明第二个动作public MyReceiver() {}@Overridepublic void onReceive(Context context, Intent intent) {if (intent.getAction().equals(action1)){Toast.makeText(context, "MyReceiver收到:com.mingrisoft的广播",Toast.LENGTH_SHORT).show(); //回复该动作收到广播}else if (intent.getAction().equals(action2)){Toast.makeText(context, "MyReceiver收到:mingrisoft的广播",Toast.LENGTH_SHORT).show();//回复该动作收到广播}}
}
使用前需要在AndroidManiFest.xml
中注册该接收器,其中android:enabled
指明该广播是否可以被实例化,andorid:exported
指定该广播接收器能否接收其他APP
的广播,<intent-filter>
对动作进行注册。
<application><receiverandroid:name=".MyReceiver"android:enabled="true"android:exported="true"><intent-filter><action android:name="com.mingrisoft"></action><action android:name="mingrisoft"></action></intent-filter></receiver>
</application>
xported
指定该广播接收器能否接收其他APP
的广播,<intent-filter>
对动作进行注册。
<application><receiverandroid:name=".MyReceiver"android:enabled="true"android:exported="true"><intent-filter><action android:name="com.mingrisoft"></action><action android:name="mingrisoft"></action></intent-filter></receiver>
</application>
Android 消息通知相关推荐
- android 通知传值,Android消息通知(notification)和PendingIntent传值
Android支持Toast和NotificationManager两种通知方式,前者相当于一个定时关闭的对话框,后者是在状态栏上显示一条消息.Toast和Notification都可以随时取消. T ...
- Java中集成极光推送实现给Android提送消息通知(附代码下载)
场景 Android中集成极光推送实现推送消息通知与根据别名指定推送附示例代码下载: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details ...
- Android中集成Jpush实现推送消息通知与根据别名指定推送附示例代码下载
场景 经常会有后台服务向Android推送消息通知的情况. 实现 首先在Android Studio中新建一个Android应用 在Project根目录的build.gradle中配置了jcenter ...
- Android学习—Notification消息通知
最近在项目中需要使用消息通知,自己把它封装成了一个方法,需要的时候方便调用, 下面对Notification类中的一些常量,字段,方法简单介绍一下: 常量: DEFAULT_ALL 使用所有默认 ...
- android 通知权限设置在哪,Android 打开消息通知权限
转载自https://blog.csdn.net/rocrocflying/article/details/78333256?locationNum=8&fps=1 和 https://blo ...
- Android篇 --Notification(消息通知)
Android篇 --Notification(消息通知) 消息通知(Notification)是Android系统中比较有特色的一个功能,当某个应用程序希望用户发出一些提示信息,而该应用又不在前台运 ...
- 「Android基于MQTT实现消息通知」
「Android基于MQTT实现消息通知」 一.写在前面 在对接项目中IoT时,发现目前有对MQTT做了接入,这里记录一下,官方的资料比较详细,这里主要从实现细节出发:对具体的需求以及配套的技术方案进 ...
- Android 判断当前应用是否开启消息通知
NotificationUtil.kt object NotificationUtil {/*** 打开手机设置页面* @param context Context*/fun setNotificat ...
- android通过代码设置铃声_有打扰 漏消息?那是Android手机通知设置没弄好!
点击上方电脑爱好者关注我们 在Android系统手机的设置内容中,"通知"是最容易被我们忽略的选项.实际上,如果你每天休息时都会被各种推送提醒打扰,又或是经常错过微信.邮箱.闲鱼等 ...
最新文章
- 可控制的页面内滚动区域
- 御用导航官方网站提醒提示页_导航错误致四川青城山拥堵?交警提醒:别过度依赖导航...
- 使Mybatis开发变得更加轻松的增强工具 — Ourbatis
- Android获取手机短信
- javaee实验报告心得_准大四学生七月青软实训总结
- Java注释Override、Deprecated、SuppressWarnings详解
- Lua的require机制
- 三相滤波器怎么接线_单相电机和三相电机怎么接线?为什么三相电机有3或6个接线柱?...
- if和case用法比较
- HTML5 API详解(3):为何网页上要增加Battery电池状态API
- 利用缓冲流读取跟写入
- android将activity打成jar包供第三方调用,把Activity打包成jar供其App使用
- 前端向后端传参报415_ajax往后台传json格式数据报415错误
- apache-ant-1.7 下载
- 手动写一个搜索引擎(超详细)
- linux下挂载移动硬盘(ntfs格式),Linux下挂载移动硬盘(NTFS格式)
- 向上的路,从来都不好走(好文力荐)
- 简述中断处理的6个步骤_完整的中断处理过程分为那几个阶段?
- 【阿里云】DCDN全站加速介绍及配置
- 软技能-代码之外的生存指南