android基础通知

这个示例首先定义一个Button按钮。当点击按钮时,会调用showNotification()方法来显示通知。在showNotification()方法中,首先获取NotificationManager服务,然后检查设备的Android版本。如果设备运行的Android版本大于或等于Android 8.0AndroidO,则会创建一个新的NotificationChannel。然后创建一个Notification并填充必要的信息,例如icon,标题和文本。注意R.drawable.ic_launcher_foreground需要替换你app中的icon。最后,通过NotificationManagerCompat显示通知。通知ID被设置为1,如果你想在后面更新通知,你可以使用相同的ID。

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            NotificationTestTheme {
                // A surface container using the 'background' color from the theme
                Surface(
                    modifier = Modifier.fillMaxSize(),
                    color = MaterialTheme.colorScheme.background
                ) {
                    val context = LocalContext.current
                    Greeting(context)
                }
            }
        }
    }
}

@SuppressLint("MissingPermission")
fun showNotification(context: Context) {
    val notificationManager =
        context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        val channel = NotificationChannel(
            "default",
            "Default Channel",
            NotificationManager.IMPORTANCE_DEFAULT
        )
        notificationManager.createNotificationChannel(channel)

        //创建另一个重要通知渠道
        val channel2 = NotificationChannel(
            "important",
            "Important Channel",
            NotificationManager.IMPORTANCE_HIGH
        )
        notificationManager.createNotificationChannel(channel2)
    }

    //加入通知点击界面,点击通知横幅后会跳转到此界面
    //先使用Intent表达意图
    val intent = Intent(context, NotificationActivity::class.java)
    val pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_IMMUTABLE)

    //通知内还可以显示全部的长通知文字(而不用省略号)和图片
    //第二个参数表示channelId
    val notification = NotificationCompat.Builder(context, "important")
        .setSmallIcon(R.drawable.ic_launcher_foreground)
        .setContentTitle("测试通知")
        .setContentText("这是一个长测试通知|这是一个长测试通知|这是一个长测试通知|这是一个长测试通知")
        .setContentIntent(pendingIntent)
        .setAutoCancel(true)          //表示点击后自动取消通知
        .build()

    //发送通知
    NotificationManagerCompat.from(context).notify(1, notification)

}

@Composable
fun Greeting(context: Context, modifier: Modifier = Modifier) {
    Column(modifier) {
        Button(onClick = {
            showNotification(context)
        }) {
            Text(text = "发送通知")
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值