[英]Android Kotlin: Required Context but found String
我正在尝试创建一种安排通知的方法。 在该方法中,我初始化了一个AlarmManager
,它允许我按需接收 Intents。 但是,我的代码中出现以下语法错误:
类型不匹配。 要求:找到的上下文:字符串
在以下行中:
var alarmManager = getSystemService(Context.ALARM_SERVICE) as AlarmManager
下面是我的代码:
package com.example.notificationapp
import android.app.AlarmManager
import android.app.NotificationManager
import android.app.PendingIntent
import android.app.PendingIntent.getActivity
import android.content.Context
import android.content.Intent
import androidx.core.app.NotificationCompat
import androidx.core.content.ContextCompat.getSystemService
import java.security.AccessController.getContext
import java.util.*
// Channel
class Notification(context:Context, notificationManager: NotificationManager, title:String, description:String, date: Date) {
// Attributes
private lateinit var context:Context;
private var title:String = ""
private var description:String = ""
private lateinit var date:Date;
private lateinit var notificationManager:NotificationManager;
// Initialization
init {
// Download the constructor parameters into the object's attributes
this.context = context
this.title = title
this.description = description
this.date = date
this.notificationManager = notificationManager
}
// Method to set the notification at a specific time
fun setNotificationAtTime(time:Date) {
var notificationIntent = Intent(this.context, NotificationBroadcast::class.java)
var pendingNotificationIntent = PendingIntent.getBroadcast(this.context,
0, notificationIntent, 0)
// Initialize an AlarmManager that allows us to receive intents on demand
var alarmManager = getSystemService(Context.ALARM_SERVICE) as AlarmManager
val builder = NotificationCompat.Builder(context, "com.example.notificationapp")
}
}
这是因为您使用的是ContextCompat.getSystemService
而不是Context.getSystemService
。
所以你在这里有两个选择:
ContextCompat.getSystemService
使用正确的签名:getSystemService(context, AlarmManager::class.java)
Context.getSystemService
删除导入语句:androidx.core.content.ContextCompat.getSystemService
在调用 getSystemService() 之前添加 requireActivity()
val alarmManager = requireActivity().getSystemService(Context.ALARM_SERVICE) as AlarmManager
// for NotificationManager
val alarmManager = getSystemService(requireContext(), NotificationManager::class.java)
// for InputMethodManager
val imm = getSystemService(requireContext(), InputMethodManager::class.java)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.