【android开发-20】android中notification的用法讲解

2023-12-14 03:04:15

1,notification的基本用法

在Android中,通知(Notification)是一种在状态栏上显示的消息提示,用户点击通知后可以展开更多详细信息。以下是基本的通知用法:

1,创建通知
创建通知需要使用Notification类,可以通过以下代码创建一个简单的通知:

Notification notification = new Notification.Builder(context)  
    .setSmallIcon(R.drawable.notification_icon)  // 设置小图标  
    .setContentTitle("通知标题")  // 设置标题  
    .setContentText("这是通知内容")  // 设置内容  
    .build();

2,创建通知通道
从Android 8.0开始,需要在通知中创建通知通道。通知通道用于定义通知的显示方式、声音和振动方式等。可以使用以下代码创建一个通知通道:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {  
    CharSequence name = getString(R.string.channel_name);  
    String description = getString(R.string.channel_description);  
    int importance = NotificationManager.IMPORTANCE_DEFAULT;  
    NotificationChannel channel = new NotificationChannel("channel_id", name, importance);  
    channel.setDescription(description);  
    // Register the channel with the system; you can't change the importance  
    // or other notification behaviors after this  
    NotificationManager notificationManager = getSystemService(NotificationManager.class);  
    notificationManager.createNotificationChannel(channel);  
}

3,创建通知请求
创建通知请求需要使用NotificationManager类和NotificationChannel对象。可以使用以下代码创建一个通知请求:

NotificationManager notificationManager = getSystemService(NotificationManager.class);  
NotificationChannel channel = notificationManager.getNotificationChannel("channel_id");  
if (channel != null) {  
    notificationManager.notify("notification_id", channel, notification);  
}

其中,"notification_id"是一个唯一的标识符,用于区分不同的通知;"channel_id"是之前创建的通知通道的ID;"notification"是之前创建的通知对象。

2,notification设置铃声和振动
在Android中,你可以在Notification对象中设置铃声和振动。以下是一个例子:

// 创建一个新的Notification对象  
Notification notification = new Notification.Builder(context)  
    .setSmallIcon(R.drawable.notification_icon)  // 设置小图标  
    .setContentTitle("通知标题")  // 设置标题  
    .setContentText("这是通知内容")  // 设置内容  
    .setSound(soundUri)  // 设置铃声  
    .setVibrate(new long[]{100, 200, 300, 400, 500})  // 设置振动模式  
    .build();  

在这个例子中,setSound()方法用于设置通知的铃声,参数是一个Uri对象,表示铃声文件的路径。

同样,setVibrate()方法用于设置通知的振动模式。参数是一个长整数数组,表示不同的振动持续时间。第一个元素表示第一个振动的时间,第二个元素表示第二个振动的时间,以此类推。最后一个元素表示最后一个振动的时间。振动还需要声明权限:

<uses-permission android.name="android.permission.VIBRATE">

3,notification点击事件
当用户点击Android通知时,你可以通过在Notification对象中设置Intent来启动一个活动或执行其他操作。以下是一个例子:

// 创建Intent对象以启动一个活动  
Intent intent = new Intent(context, ExampleActivity.class);  
// 添加一个额外的数据字段,以便在活动中使用  
intent.putExtra("extra_data", "This is additional data.");  
// 创建PendingIntent对象,以便稍后启动这个活动  
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);  
  
// 创建一个新的Notification对象并设置点击事件  
Notification notification = new Notification.Builder(context)  
    .setSmallIcon(R.drawable.notification_icon)  
    .setContentTitle("通知标题")  
    .setContentText("这是通知内容")  
    .setSound(soundUri)  
    .setVibrate(new long[]{100, 200, 300, 400, 500})  
    .setContentIntent(pendingIntent)  // 设置点击事件  
    .build();  
  
// 发送通知  
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);  
notificationManager.notify("notification_id", notification);

在这个例子中,我们创建了一个Intent对象以启动名为ExampleActivity的活动。然后,我们添加了一个额外的数据字段,以便在启动活动时可以使用。接下来,我们创建了一个PendingIntent对象,以便稍后启动这个活动。最后,我们将PendingIntent对象设置为Notification对象的contentIntent属性,这样当用户点击通知时就会启动这个活动。

PendingIntent是Android中的一个类,它表示一种处于pending状态(待定、等待、即将发生)的意图。与Intent不同的是,PendingIntent是将在未来某个不确定时刻发生,而Intent是立刻发生。

PendingIntent支持三种待定意图:启动Activity、启动Service和发送广播。要得到PendingIntent的实例,必须传入一个Intent作为参数,同时还需要有Context作为参数。

当创建PendingIntent时,需要使用Context、Intent和额外的参数来创建PendingIntent对象。这些参数可以控制PendingIntent的行为。例如,可以使用getActivity()方法创建一个用于启动Activity的PendingIntent,或者使用getBroadcast()方法创建一个用于发送广播的PendingIntent。

当用户点击一个通知时,可以使用PendingIntent来启动一个活动或执行其他操作。在通知中设置PendingIntent的contentIntent属性,然后在用户点击通知时调用PendingIntent的execute()方法来启动活动。

总之,PendingIntent是一种方便的方式来在Android应用程序中执行延迟操作,例如启动活动、启动服务和发送广播等。

4,notification的取消
在Android中,取消通知可以通过使用通知的cancel()方法实现。你需要保留对通知的引用,以便稍后取消它。下面是一个简单的例子:

// 创建一个新的通知  
Notification notification = new Notification.Builder(context)  
    .setSmallIcon(R.drawable.notification_icon)  
    .setContentTitle("通知标题")  
    .setContentText("这是通知内容")  
    .build();  
  
// 发送通知  
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);  
notificationManager.notify("notification_id", notification);  
  
// 在某个时间点,取消通知  
notificationManager.cancel("notification_id");

在这个例子中,“notification_id"是通知的唯一标识符。当你调用cancel()方法时,所有具有相同标识符的通知都将被取消。如果你想取消所有的通知,可以传递一个空字符串(”")作为标识符。

请注意,你只能在应用程序的上下文中取消通知,不能在其他应用程序的上下文中取消通知。

文章来源:https://blog.csdn.net/jiangchaobing_2017/article/details/134858578
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。