Android8.0 Notification

本文介绍了Android 8.0中新增的通知渠道(Notification Channel)的使用,包括创建NotificationChannel的步骤和重要度设置。同时,详细讲解了PendingIntent的概念和作用,它是如何在通知响应用户操作时启动Activity或Service。文中提供示例代码,并解释了为何在Context销毁后PendingIntent仍然有效。
摘要由CSDN通过智能技术生成

android8.0通知以后需要channel

先上代码
MainActivity

/*
* 发送通知的步骤
* 1.创建一个频道,需要id,name,importance三个参数
* 2.创建一个NotificationManager,然后create上面的频道
* 3.创建一个Notification,中间设置内容标题啥的,一定要setChannelId()。获取Notification实例用new Notification.Builder创建。
* 4.用创建一个NotificationManager的notify发送通知
* */
public class MainActivityextends AppCompatActivity implements View.OnClickListener {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_notification);
        Button button=findViewById(R.id.btn_notifaction);
        button.setOnClickListener(this);

    }
    @Override
    public void onClick(View view) {
        sendNotification();
    }
    
    @TargetApi(26)
    private void sendNotification() {
        String id="channel_01";
        String name="channel_01";
        int importance = NotificationManager.IMPORTANCE_HIGH;
        NotificationChannel channel=new NotificationChannel(id,name,importance);    //android8.0以后需要channel
        channel.setDescription("hello");// 配置通知渠道的属性
        channel.enableLights(true); // 设置通知出现时的闪灯(如果 android 设备支持的话)
        channel.setLightColor(Color.RED);
        channel.enableVibration(true);  // 设置通知出现时的震动(如果 android 设备支持的话)
        channel.setVibrationPattern(new long[]{100,200,300,400,500,400,300,200,400});

        
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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、付费专栏及课程。

余额充值