Exp*_*n't 3 null android android-service kotlin system-services
到目前为止查看了很多类似的问题,但最终没有一个解决方案。
我正在尝试启动前台服务来处理短信。该服务在应用程序首次打开时启动,并通过 kotlin 协程在后台线程上工作。即使应用程序已关闭,此进程仍保持活动状态。
我不太熟悉各种上下文,但我认为 applicationContext 将在应用程序的生命周期中存在,但我为获取 SmsManager 所做的调用返回 null,因此无论应用程序是否打开都是无用的。
主要活动中调用服务:
val textServiceIntent = Intent(this@MainActivity, TextManager::class.java)
applicationContext.startForegroundService(textServiceIntent)
Run Code Online (Sandbox Code Playgroud)
调用 getSystemService,返回 null:
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
val sms = applicationContext.getSystemService(SmsManager::class.java)
}
Run Code Online (Sandbox Code Playgroud)
注意:我也尝试将其放入 onCreate() 中,其中调用 super.onCreate() ,同样的问题。
是否有其他方法可以获取上下文来访问 SmsManager 或服务进程内的任何其他系统服务?
从首次调用的主要活动中传递上下文是否明智,因为该服务将比打开的应用程序更持久?
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
applicationContext.getSystemService<SmsManager>(SmsManager::class.java)
} else {
SmsManager.getDefault()
}
Run Code Online (Sandbox Code Playgroud)