Android通知,PendingIntent示例

时间:2020-02-23 14:29:06  来源:igfitidea点击:

欢迎使用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。