Android通知,PendingIntent示例
欢迎使用Android PendingIntent的Android通知示例。
在本教程中,我们将讨论并实现" PendingIntent"并在应用程序中构建" Notification"。
Android PendingIntent
Android PendingIntent是包装intent对象的对象,它指定将来要执行的操作。
换句话说,PendingIntent
使我们可以将将来的Intent传递给另一个应用程序,并允许该应用程序执行该Intent,就好像它具有与我们的应用程序相同的权限一样,无论最终调用该Intent时我们的应用程序是否还在。
PendingIntent通常用于需要执行AlarmManager或者用于Notification的情况(我们将在本教程的稍后部分实现)。
PendingIntent提供了一种使应用程序工作的方法,即使它们退出了进程也是如此。
出于安全原因,提供给PendingIntent的基本Intent必须具有明确设置的组件名称,以确保最终将其发送到那里。
每个明确的意图都应该由特定的应用程序组件(例如Activity,BroadcastReceiver或者Service)处理。
因此,PendingIntent使用以下方法来处理不同类型的意图:
PendingIntent.getActivity()
:检索一个PendingIntent以启动一个活动PendingIntent.getBroadcast()
:检索一个PendingIntent以执行广播PendingIntent.getService()
:检索启动服务的PendingIntent。
下面给出了PendingIntent的示例实现。
Intent intent = new Intent(this, SomeActivity.class); //Creating a pending intent and wrapping our intent PendingIntent pendingIntent = PendingIntent.getActivity(this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT); try { //Perform the operation associated with our pendingIntent pendingIntent.send(); } catch (PendingIntent.CanceledException e) { e.printStackTrace(); }
使用send()
方法来执行与未决Intent相关的操作。
下面介绍了getActivity()方法内部的参数及其用法:
这(上下文):这是PendingIntent其中启动活动的上下文
requestCode:" 1"是在以上示例中使用的发件人的私有请求代码。
以后再次以相同的方法使用它会返回相同的未决意图。
然后,我们可以做各种事情,例如使用cancel()取消待处理的意图等。意图:要启动的活动的明确意图对象
flag:我们在以上示例中使用的PendingIntent标志之一是FLAG_UPDATE_CURRENT。
这说明如果先前的PendingIntent已经存在,那么当前的PendingIntent将使用最新的Intent更新它。
还有许多其他标志,例如FLAG_CANCEL_CURRENT等。
Android通知
Android Toast类提供了一种方便的方式来向用户显示警报,但问题是这些警报不是持久性的,这意味着警报在屏幕上闪烁几秒钟然后消失。
在这种情况下,Android通知消息会填补空白。
Android通知是一条消息,我们可以在应用程序的常规UI之外向用户显示。
android中的通知是使用NotificationCompat
库构建的。
创建Android通知
使用NotificationManager
类创建一个Notification,如下所示:
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Notification.Builder
提供了一个构建器接口来创建一个Notification对象,如下所示:
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this);
Android通知方法
我们可以在此构建器对象上设置通知属性。
下面给出一些常用方法及其说明。
- Notification build():组合所有已设置的选项并返回一个新的Notification对象
- NotificationCompat.Builder setAutoCancel(boolean autoCancel):设置此标志将使其生效,以便当用户在面板中单击通知时自动取消通知
- NotificationCompat.Builder setContent(RemoteViews视图):提供自定义的RemoteView来代替标准的RemoteViews使用
- NotificationCompat.Builder setContentInfo(CharSequence info):在通知的右侧设置大文本
- NotificationCompat.Builder setContentIntent(PendingIntent intent):提供单击通知时发送的PendingIntent
- NotificationCompat.Builder setContentText(CharSequence文本):在标准通知中设置通知的文本(第二行)
- NotificationCompat.Builder setContentTitle(CharSequence标题):在标准通知中设置通知的文本(第一行)
- NotificationCompat.Builder setDefaults(默认值):设置将使用的默认通知选项。
一个例子是; - NotificationCompat.Builder setLargeIcon(位图图标):设置自动收录器和通知中显示的大图标
- NotificationCompat.Builder setNumber(int number):在通知的右侧设置大数字
- NotificationCompat.Builder setOngoing(布尔正在进行中):设置是否为正在进行的通知
- NotificationCompat.Builder setSmallIcon(int图标):设置要在通知布局中使用的小图标
- NotificationCompat.Builder setStyle(NotificationCompat.Style样式):添加丰富的通知样式以在构建时应用
- NotificationCompat.Builder setTicker(CharSequence tickerText):设置通知首次到达时在状态列中显示的文本
- NotificationCompat.Builder setVibrate(long []模式):设置要使用的振动模式
- NotificationCompat.Builder setWhen(较长时间):设置事件发生的时间。
面板中的通知此时已排序
Android通知按钮和样式
" Notification.Builder"可让您向通知中添加最多三个具有可定义操作的按钮。
Android 4.1及更高版本支持可扩展通知,该通知可在扩展时显示较大的视图。
大视图可以使用三种样式:大图片样式,大文本样式,收件箱样式。
取消Android通知
我们还可以在NotificationManager上为特定的通知ID调用cancel()。cancelAll()
方法调用将删除您先前发出的所有通知。
在本教程中,我们将创建一个应用程序,该应用程序将可以查看网页的意图包装到PendingIntent中。
当点击通知时,该PendingIntent将触发。
此外,我们还将添加通过编程方式取消通知的功能。
Android通知示例
activity_main.xml是具有两个按钮的基本相对布局:一个用于创建通知,另一个用于取消通知。
activity_main.xml
:
mBuilder.setDefaults(Notification.DEFAULT_LIGHTS | Notification.DEFAULT_SOUND)
MainActivity.java
在下面给出。
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android" xmlns:tools="https://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.theitroad.notifications.MainActivity"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="CREATE NOTIFICATION" android:id="@+id/button" android:layout_alignParentTop="true" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="CANCEL NOTIFICATION" android:id="@+id/button2" android:layout_below="@+id/button" android:layout_alignRight="@+id/button" android:layout_alignEnd="@+id/button" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" </RelativeLayout>
在上面的代码中,我们已将该的意图传递到PendingIntent中。
notificationId设置为1,用于构建通知并取消通知。
使用PendingIntent教程结束了Android通知。
您可以从下面的链接下载Android Notification Project。