目录
一、基础知识
(一)通知创建
1.渠道ID
2.渠道名称
3.通知的重要等级
(二)通知设置
(三)pendingItent和Itent的区别
Intent
PendingIntent
二、准备工作
(一)手机设置(根据个人手机型号,自行上网查找开发者模式设置)
1.连接
2.更改设置(否则无法手机安装)
3.更改USB连接方式如下
(二)电脑设置
三、项目搭建
(一)布局设置
(二)项目准备
1.授权通知
2.建立连接
3.获取当前系统的服务--通知服务
4.创建通知
5.建立监听,实现点击后弹出通知
(三)完整代码
AndroidManifest.xml
Activity.xml
Activity.kt
NotificationActivity.kt
创建通知渠道至少需要知道渠道的ID、渠道名称以及重要等级这三个参数。
可以随意定义,但需要保证全局唯一。
给用户看的,表达渠道的用途。
主要有IMPORTANCE_HIGH、IMPORTANCE_DEFAUILT、IMPORTANCE_LOW、IMPORTANCE_MIN,对应重要程度依次从高到低,不同的重要等级决定通知的不同行为。
方法名 | 用途 |
.setContentTitle() | 添加标题 |
.setContentText() | 添加显示内容 |
.setStyle(NotificationCompat.BigTextStyle().bigText()) | 添加长内容(点击进去的显示) |
.setSmallIcon() | 设置简单的小图标 |
.setLargeIcon() | 设置大图标 |
.setAutoCancel() | 设置点击之后的通知是否消失(true消失,false不消失) |
.setContentIntent(pendingIntent) | 载入自己设置的pendingIntent,在通知栏中点击该信息之后的跳转 |
可以及时启动执行。
一种延迟执行的Itent,需要通过getActivit,getBroadcas,getService得到pendingintent的实例。可以显示点击之后再执行。
手机数据线进行与电脑连接
系统和更新~开发者选项~调试~usb调试(开启)
有如下显示:
当以上成功设置后,点击项目下方的 Locat,下拉选择自己的手机,即可连接成功。
在AndroidManifest.xml中添加下面的权限授予
val sendNotice:Button=findViewById(R.id.buttton1)
val manager=getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
if (Build.VERSION.SDK_INT >= 26){//本项目是26,可写为Build.VERSION_CODES.O来获取
//8.0引入channel
//创建通道,第一个ID,第二个名称,第三个重要等级
val channel = NotificationChannel("normal","warn",NotificationManager.IMPORTANCE_DEFAULT)
//normal全局为1
manager.createNotificationChannel(channel)//创建
}
sendNotice.setOnClickListener {
val intent = Intent(this,NotificationActivity::class.java)//引用
val pi = PendingIntent.getActivity(this,0,intent,0)
val notification = NotificationCompat.Builder(this,"normal")
//context是上下文指针,channelled与上文id匹配
.setContentTitle("警告")
.setContentText("前方的区域以后再来探索吧")
.setSmallIcon(R.drawable.ic_launcher_foreground)
.setStyle(NotificationCompat.BigTextStyle().bigText("1 调试自己的手机,配置自己的手机为开发者模式\n" +
"\n" +
"2 运行安卓,在模拟器运行选择上,选择自己的手机\n" +
"\n" +
"3 创建3个通知,观察每个通知的详细内容\n"))
.setAutoCancel(true)//点进通告,通知栏的通告会消失
.setContentIntent(pi)//载入pi
.build()
manager.notify(1,notification)//第一个参数是通知标签
}
package com.example.a124
import android.app.Notification
import android.app.NotificationChannel
import android.app.NotificationManager
import android.app.PendingIntent
import android.content.Context
import android.content.Intent
import android.os.Build
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import androidx.core.app.NotificationCompat
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val sendNotice:Button=findViewById(R.id.buttton1)
val manager=getSystemService(Context.NOTIFICATION_SERVICE) as //获取相应服务
NotificationManager
if (Build.VERSION.SDK_INT >= 26){
//8.0引入channel
//创建通道
val channel = NotificationChannel("normal","warn",NotificationManager.IMPORTANCE_DEFAULT)
//normal全局为1
manager.createNotificationChannel(channel)//创建
}
sendNotice.setOnClickListener {
val intent = Intent(this,NotificationActivity::class.java)//引用
val pi = PendingIntent.getActivity(this,0,intent,0)
val notification = NotificationCompat.Builder(this,"normal")
//context是上下文指针,channelled与上文id匹配
.setContentTitle("警告")
.setContentText("前方的区域以后再来探索吧")
.setSmallIcon(R.drawable.ic_launcher_foreground)
.setStyle(NotificationCompat.BigTextStyle().bigText("1 调试自己的手机,配置自己的手机为开发者模式\n" +
"\n" +
"2 运行安卓,在模拟器运行选择上,选择自己的手机\n" +
"\n" +
"3 创建3个通知,观察每个通知的详细内容\n"))
.setAutoCancel(true)//点进通告,通知栏的通告会消失
.setContentIntent(pi)//载入pi
.build()
manager.notify(1,notification)//第一个参数是通知标签
}
}
}
package com.example.a124
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
class NotificationActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_notification)
}
}