android - registerReceiver 不起作用可能是什么问题
问题描述
虽然在 Manifest 中定义接收器是有效的,但我在动态定义方面遇到了困难。我的应用程序包含用于创建广播的代码
val alarmManager = getSystemService(Context.ALARM_SERVICE) as AlarmManager
val intent = Intent(this, AlarmReceiver::class.java)
intent.setAction("com.example.PetesTimerOne.Broadcast")
val pendingIntent = PendingIntent.getBroadcast(this, ALARM_REQUEST_CODE,
intent, PendingIntent.FLAG_UPDATE_CURRENT)
alarmManager.setExact(
AlarmManager.RTC_WAKEUP,
firstAlarm.timeInMillis,
pendingIntent
为了接收我有一个 BoardcastReceiver 类
package com.example.PetesTimerOne
import android.app.NotificationChannel
import android.app.NotificationManager
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.widget.Toast
import android.os.Build
import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationManagerCompat
import androidx.core.content.getSystemService
import android.annotation.TargetApi
class AlarmReceiver: BroadcastReceiver() {
companion object {
const val NOTIFICATION_ID = 100
const val NOTIFICATION_CHANNEL_ID = "1000"
}
override fun onReceive(context: Context, intent: Intent) {
Toast.makeText(context, "onReceive called", Toast.LENGTH_SHORT).show()
//createNotificationChannel(context)
//notifyNotification(context)
// println("onReceive called")
}
如果我通过在清单中定义接收器
<receiver
android:name=".AlarmReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.example.PetesTimerOne.Broadcast"></action>
</intent-filter>
</receiver>
它工作正常。但是,当我在 MainActivity 中尝试动态定义时
private val alarmReceiver = AlarmReceiver()
并在 onCreate()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// alarm receiver
val iF = IntentFilter(cBroadcastName)
registerReceiver(alarmReceiver, iF)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
setSupportActionBar(binding.toolbar)
val navController = findNavController(R.id.nav_host_fragment_content_main)
appBarConfiguration = AppBarConfiguration(navController.graph)
setupActionBarWithNavController(navController, appBarConfiguration)
}
它不起作用,我不知道为什么。我查看了许多教程,但找不到我错过的内容。
解决方案
推荐阅读
- excel - 每隔 n 列使用 Target.Column
- php - Docker-compose 权限错误,chown 不起作用
- c - 为什么 FTDI 的这个 I2C 示例代码中有一个字地址?
- java - 如何通过 Telnet 发送字符串?
- python-3.x - numpy.matmul 给出的答案与@不同
- firebase - Flutter Firebase Admob 集成混乱
- c# - 在 get 中返回值和分配属性有什么区别?
- jenkins - Jenkins - bat 控制台怎么可能在 sshagent 插件中工作,但 sh 控制台却不能?
- chart.js - Charts.js - 获取折线图中任意 X 坐标的 Y 坐标(带线张力)
- javascript - 如何在一行中 console.log 对象