繁体   English   中英

applicationContext.getSystemService(SmsManager::class.java) 在服务内返回 null

[英]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 或服务进程内的任何其他系统服务?

从第一次调用它的主要活动传递上下文是否明智,因为该服务将比打开的应用程序更持久?

如果您的目标 SDK < 31 (S),请使用它

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM