小编Exp*_*n't的帖子

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

到目前为止查看了很多类似的问题,但最终没有一个解决方案。

我正在尝试启动前台服务来处理短信。该服务在应用程序首次打开时启动,并通过 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 或服务进程内的任何其他系统服务?

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

null android android-service kotlin system-services

3
推荐指数
1
解决办法
1042
查看次数

标签 统计

android ×1

android-service ×1

kotlin ×1

null ×1

system-services ×1