安卓8.0以上版本Notification使用

安卓8.0以上版本Notification发生了很大变化。
今天在学习的时候,按照《第一行代码》中写的一样,但尝试了好几遍,都无法成功,在手机调试了没有反应。接下来,我跟大家分享一下我查找了资料以及修改了代码之后的效果。
1,
首先,是NotificationCompat.Builder的问题。升级版本后,该方法被修改为:
NotificationCompat.Builder(Context context, String channelId)
即需要传递两个参数。
2,
安卓8.0以上版本,创建通知:
import android.os.Build;

String CHANNEL_ID = “my_channel_01”;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { CharSequence name = “my_channel_name”; String description = “my_channel_description”; int importance = NotificationManager.IMPORTANCE_DEFAULT; NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance); channel.setDescription(description); NotificationManager notificationManager = getSystemService(NotificationManager.class); notificationManager.createNotificationChannel(channel); Notification notification = new NotificationCompat.Builder(getApplicationContext(),CHANNEL_ID)
.setContentTitle(“Chat”) .setContentText(“发送失败!”) .setWhen(System.currentTimeMillis()) .setSmallIcon(R.mipmap.ic_launcher) .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher)) .build(); notificationManager.notify(1,notification);
在这里插入图片描述

==我也是刚学安卓,遇到问题就把解决方法和大家分享,一起进步。有做的不好的,请大家见谅。

参考资料:
https://blog.csdn.net/csdnxufei/article/details/87648856

Android 8.0 及以上版本,为了增强应用程序的安全性,Android 引入了后台限制,禁止未在前台运行的应用程序启动服务。如果您想在后台启动服务,需要使用 `startForegroundService()` 方法。这个方法会启动一个前台服务,然后你可以在服务启动后在通知栏显示一个通知,以此来告知用户服务正在运行。 以下是一个使用 `startForegroundService()` 的示例代码: ``` if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { // 创建一个 NotificationChannel NotificationChannel channel = new NotificationChannel("channel_id", "channel_name", NotificationManager.IMPORTANCE_DEFAULT); // 向系统注册 NotificationChannel NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.createNotificationChannel(channel); } // 创建一个 Intent,启动你的服务 Intent serviceIntent = new Intent(this, YourService.class); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { // 在 Android 8.0 及以上版本上,需要调用 startForegroundService() 方法启动服务。 startForegroundService(serviceIntent); } else { // 在 Android 8.0 以下版本上,可以直接调用 startService() 方法启动服务。 startService(serviceIntent); } ``` 注意:如果你使用的是 `startForeground()` 方法,会在 Android 8.0 及以上版本上抛出 `IllegalStateException` 异常,因为 Android 8.0 及以上版本禁止在后台启动服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值