[英]applicationContext.getSystemService(SmsManager::class.java) returning null inside a Service
到目前为止查看了很多类似的问题,但没有一个最终解决。
我正在尝试启动前台服务以处理 SMS 消息。 此服务在应用程序首次打开时启动,并通过 kotlin 协程在后台线程上工作。 即使应用程序已关闭,此过程仍处于活动状态。
我不太精通各种上下文,但我认为 applicationContext 会在应用程序的生命周期内存在,但我为获取 SmsManager 所做的调用返回 null ,因此无论应用程序是否打开都是无用的.
在主要活动中调用服务:
val textServiceIntent = Intent(this@MainActivity, TextManager::class.java)
applicationContext.startForegroundService(textServiceIntent)
调用 getSystemService,返回 null:
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
val sms = applicationContext.getSystemService(SmsManager::class.java)
}
注意:我也尝试将它放在调用 super.onCreate() 的 onCreate() 中,同样的问题。
是否有其他方法可以获取上下文以访问 SmsManager 或服务进程内的任何其他系统服务?
从第一次调用它的主要活动传递上下文是否明智,因为该服务将比打开的应用程序更持久?
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
applicationContext.getSystemService<SmsManager>(SmsManager::class.java)
} else {
SmsManager.getDefault()
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.