簡體   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