Notification
一、概述
Notification是Android中一个重要的系统服务,Notification显示通知信息在手机状态栏,手机状态栏位于屏幕最上方,那里通常显示手机当前的网络状态、电池状态、时间、短信等。Notification代表的是一种具有全局效果的通知,Notification对象要通过NotificationManager(通知管理器类)的对象来发送。
二、Notification类
1)概述
Notification类用于存放通知标题、内容、图标以及发送的目标对象。
2)常用属性
1.icon:通知的图标 示例代码: Notification notif = new Notification(); notif.icon = R.drawable.ic_launcher; 说明:第一行创建通知对象,第二行设置通知对象的icon的图标,该图标用了Android默认的图标,也可以是其它图片。 2.tickerText:通知标题,该标题显示在窗口的状态栏中。 示例代码:notif.tickerText="通知来啦"; 3.flags:设置通知状态的标志值,有如下可选常量值: FLAG_AUTO_CANCEL:在通知栏点击此通知后通知被清除。 FLAG_INSISTENT:重复发出声音,直到用户响应此通知。 FLAG_ONGOING_EVNET:将此通知放到通知栏的"Ongoing"即"正在运行"组中 FLAG_NO_CLEAR:禁止手动清除此通知。 4.defaults:设置通知的默认属性,默认属性包含声音提示、震动提示、闪光提示等。 其中: DEFAULT_SOUND:默认声音 DEFAULT_VIRBATE:默认震动 DEFAULT_LIGHTS:默认闪光灯 ALL:使用默认声音、默认震动和默认闪光灯。 5.public int contentIntent:存放一个PendingIntent类型的对象 PendingIntent类稍后介绍。 6.public int contentView:存放一个RemoteView类型的对象。使用该对象可以在状态栏显示如下载进度这类的效果。
PendingIntent类
1、概述
1)PendingIntent用于描述Intent及其最终的行为。
2)PendingIntent对象可以递交给其它应用程序,然后继续处理。这样可稍后才处理PendingIntent中描述的Intent及其最终行为。
2、常用方法
1)public static PendingIntentgetActivity(Context context,int requestCode,Intent intent,int flags) 作用:从系统取得一个用于启动目标(Intent中设置)Activity的 PendingIntent对象。 参数——context:当前组件的对象。 参数——requestCode:请求码,用0即可。 参数——intent:intent对象,用于指定通知的目标组件。 参数——flags:设置通知类型,有两个常用的可选值: 1.FLAG_CANCEL_CURRENT:设定在提取PendingIntent时,先关闭之前的PendingIntent实例,这样得到的PendingIntent就是新的了。 2.FLAG_UPDATE_CURRENT:设置新的Intent更新之前的PendingIntent中的Intent对象数据,例如更新Intent中的Extras。 提示:本应用中设置flags值为0即可。 2)public static PendingIntent getService(Context context,int requestCode,Intent intent,int flags) 作用:从系统取得一个用于启动目标Service的PendingIntent对象 3)public static PendingIntent getBroadcast(Context context,int requestCode,Intent intent,int flags) 作用:从系统取得一个用于启动BroadcastReceiver的Intent广播的PendingIntent对象。
值得一提的就是:
使用Notification notif = new Notification(R.drawable.ic_launcher,"通知来了!",System.currentTimeMillis());的方法已经落伍了,所以不能够使用该方法,需要改用Notification.Builder来替代
实际案例:
package com.jxust.day07_01_notificationdemo; import android.annotation.SuppressLint; import android.app.Activity; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; @SuppressLint("NewApi") public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setListener(); } private void setListener() { findViewById(R.id.btnSendNotification).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 创建启动目标Activity的Intent对象 Intent intent = new Intent(MainActivity.this, SecondActivity.class); // 创建PendingIntent对象 PendingIntent pi = PendingIntent.getActivity(MainActivity.this, 0, intent, 0); // 创建Notification对象 已过时 // Notification notif = new // Notification(R.drawable.ic_launcher,"通知来了!",System.currentTimeMillis()); // 设置点击通知的监听 // notif.setLatestEventInfo(MainActivity.this, // "你有软件可以更新", "点击开始更新", pi); 已过时 // 创建通知管理器对象 / 获得系统服务 NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); // 系统推荐的新用法 Notification.Builder builder = new Notification.Builder(MainActivity.this); builder.setContentTitle("你有软件可以更新"); builder.setContentText("点击开始更新"); builder.setSmallIcon(R.drawable.ic_launcher); builder.setContentIntent(pi); // 这个就是可以通过点击来跳到另一个Activity的作用 Notification notification = builder.build(); // 发送通知 manager.notify(88,notification); } }); } }
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <Button android:id="@+id/btnSendNotification" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="发送通知" /> </RelativeLayout>
package com.jxust.day07_01_notificationdemo; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; public class SecondActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is // present. getMenuInflater().inflate(R.menu.second, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.jxust.day07_01_notificationdemo.SecondActivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Second Activity" /> </RelativeLayout>
效果如下:
通过点击创建出来的Notification可以跳转到SecondActivity
相关推荐
Notification 和 PendingIntent 的使用 Notification 是 Android 系统中的一种机制,用于在系统状态栏中显示通知信息,通常用于提醒用户某些事件的发生。PendingIntent 则是 Android 中的一种机制,用于在特定的...
本地推送主要通过Android系统的Notification类和PendingIntent类来实现。Notification用于在通知栏展示信息,如标题、内容、图标等;PendingIntent则用来处理用户点击通知后的动作,例如启动一个Activity或执行一个...
下面我们将深入探讨PendingIntent的使用方法,以及在Notification和短信发送中的具体应用。 首先,理解PendingIntent的基本概念。PendingIntent并不是一个可以直接执行的操作,而是一个持有意图(Intent)的对象,它...
在Android开发中,Intent和PendingIntent是两个非常重要的概念,它们在组件间的通信中起到关键作用。Intent可以理解为一种消息传递对象,用于在不同组件之间传递行为和数据,而PendingIntent则是Intent的一种封装,...
例如,当我们更新Notification的Intent时,如果使用了`FLAG_UPDATE_CURRENT`,那么先前的PendingIntent会被更新为新的Intent。 在实际应用中,PendingIntent常用于: 1. **通知的点击事件**:创建一个PendingIntent...
了解如何正确使用Service、PendingIntent和Notification对于构建高效且用户体验良好的Android应用至关重要。这些组件共同构成了Android系统中后台任务处理的核心机制,帮助开发者实现诸如后台音乐播放、后台数据同步...
`notification.gif`和`001.png`可能是展示Notification在不同平台或状态下的截图,帮助开发者理解其视觉表现和用户体验。 总的来说,Notification通知是现代应用不可或缺的一部分,它帮助应用与用户保持联系,提供...
1. **构建Notification对象**:使用`NotificationCompat.Builder`类创建`Notification`。这个类提供了许多设置选项,如标题、文本、图标、声音等。例如: ```java NotificationCompat.Builder builder = new ...
- Android的Notification API随着版本更新不断优化,从早期的Notification.Builder到现在的NotificationCompat.Builder,提供更丰富的功能和更好的兼容性。使用NotificationCompat.Builder可以确保在多个Android...
BarManagerService 中对 ...Notification 的数据结构和功能处理流程展示了 Android 如何在系统层面上管理和呈现通知,以及如何与用户进行有效的交互。理解这一机制对于开发者优化用户体验和避免不必要的干扰至关重要。
在构建`Notification`时,我们需要使用`NotificationCompat.Builder`类,它是Android Support Library提供的兼容版本,能确保在多个Android版本上运行。 1. **创建基本Notification** 使用`NotificationCompat....
2. **Builder对象**: 使用`NotificationCompat.Builder`类构建Notification,它提供了一系列方法来设置通知的标题、内容、图标、优先级等属性。 3. **PendingIntent**: Notification通常包含一个或多个`...
- **请求码和标志**:合理使用请求码和标志可以区分不同PendingIntent,防止冲突和错误。 综上所述,PendingIntent是Android开发中的一个重要工具,它允许开发者在不同组件之间安全地传递和延迟执行Intent操作,为...
Notification的实用技巧涵盖了许多方面,旨在提升用户体验和应用的易用性。下面将详细介绍Notification的创建、定制以及优化策略。 首先,创建一个基本的Notification需要使用`NotificationCompat.Builder`类。通过...
在创建Notification时,我们通常会使用`NotificationCompat.Builder`类,这是一个兼容库,确保在不同版本的Android系统上都能正常工作。 下面是一段创建Notification的基本代码示例: ```java // 获取...
`PendingIntent`在`Notification`中扮演着关键角色,它封装了一个待执行的动作,当用户点击通知时,`PendingIntent`将触发相应的操作。这可以是一个启动Activity、BroadcastReceiver或者Service的意图。例如,我们...
通过创建合适的Notification和对应的PendingIntent,以及一个承载WebView的Activity,我们可以实现这一功能。注意处理好用户体验,如加载速度、页面跳转和通知管理,这些都是提升应用质量的关键。
6. **Intent和PendingIntent**:在`Notification`中,`PendingIntent`用于在用户点击通知时触发一个动作,如打开特定的Activity。开发者需要理解如何创建和使用`PendingIntent`来连接`Notification`与应用的行为。 ...
创建Notification主要通过`NotificationCompat.Builder`类,这个类提供了丰富的构建方法,如`setContentTitle()`、`setContentText()`、`setSmallIcon()`等。示例代码如下: ```java NotificationCompat.Builder ...