Andlua实现通知栏显示

-- 导入需要用到的各种安卓类库
require "import"
import "android.app.*"
import "android.os.*"
import "android.widget.*"
import "android.view.*"
import "android.content.Intent"
import "android.app.PendingIntent"
-- 在 onCreate 函数中创建应用界面
function onCreate(savedInstanceState)
-- 设置标题
activity.setTitle("通知示例")
-- 创建一个垂直方向的线性布局
local layout = LinearLayout(activity)
layout.setOrientation(LinearLayout.VERTICAL)
-- 创建一个按钮控件,并设置其文本
local button = Button(activity)
button.setText("显示通知")
-- 设置按钮点击事件
button.setOnClickListener(View.OnClickListener{
onClick = function(view)
-- 获取 NotificationManager 服务对象
local notificationManager = activity.getSystemService(activity.NOTIFICATION_SERVICE)
-- 如果设备版本大于等于 O,创建一个通知渠道
if Build.VERSION.SDK_INT >= Build.VERSION_CODES.O then
local channel = NotificationChannel("my_channel_01", "通知渠道名称", NotificationManager.IMPORTANCE_DEFAULT)
-- 设置通知渠道的行为属性,包括是否震动、是否有声音等
notificationManager.createNotificationChannel(channel)
end
-- 创建一个 Intent,用于启动一个新的 Activity 页面
local intent = Intent(activity, LuaActivity)
intent.putExtra("message", "这是从通知启动的 Activity。")
-- 创建一个 PendingIntent 对象,用于在用户点击通知时打开该 Activity 并传递额外数据
local pendingIntent = PendingIntent.getActivity(activity, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)
-- 创建一个 Notification.Builder 对象,用于构造通知
local notificationBuilder = Notification.Builder(activity)
-- 设置通知标题、内容、小图标,并将 PendingIntent 对象关联到通知中
.setContentTitle("标题测试")
.setContentText("这是一条通知消息。")
.setSmallIcon(android.R.drawable.stat_notify_chat)
-- 设置该通知为持久通知,不会在用户下拉通知栏时被移除
.setOngoing(true)
.setContentIntent(pendingIntent)
-- 如果设备版本大于等于 O,将该通知与刚才创建的通知渠道关联
if Build.VERSION.SDK_INT >= Build.VERSION_CODES.O then
notificationBuilder.setChannelId("my_channel_01")
end
-- 使用 NotificationManager 发送该通知
notificationManager.notify(1, notificationBuilder.build())
end
})
-- 将按钮添加到布局中
layout.addView(button)
-- 将布局设置为当前 Activity 的内容视图
activity.setContentView(layout)
end
-- 在 onResume 函数中处理 Activity 进入前台后的逻辑
function onResume()
-- 获取启动 Activity 时传递的文本信息
local message = activity.getIntent().getStringExtra("message")
-- 如果文本信息不为空,使用 Toast 弹出提示框显示该文本信息
if message then
Toast.makeText(activity, message, Toast.LENGTH_SHORT).show()
end
end