如何从广播接收器中获取应用程序上下文?

15

我有一个Application类的扩展,在我创建的BroadcastReceiver中需要获取其引用。传递到“onReceive”方法中的上下文是受限上下文。是否有一种方法可以获取到实际的应用程序上下文引用?


你为什么说它是受限的?你具体想在上下文中做什么? - FoamyGuy
由于onReceive上下文的实际类是ReceiverRestrictedContext类型,因此我有一个Application的扩展,允许我非静态地获取我需要的多个对象的引用。 - user130532
3个回答

29

onReceive() 中提供给您的 Context 上调用 getApplicationContext(),就像您在 Activity 上调用 getApplicationContext() 一样。

我有一个应用程序的扩展,允许我非静态地获取我需要的几个对象的引用。

尽管从语法上说,Application 不是静态的,但它具有相同的影响,特别是与内存泄漏相关。


1
谢谢。我会尽快尝试这个方法来回复你的答案。 - user130532
好的,谢谢。我发誓我之前试过了,但我猜我没成功。 - user130532

0

BroadcastReceiver已经提供了上下文。请查看onReceive。

public void onReceive(Context context, Intent intent)

0
class SMSReceiver: BroadcastReceiver() {
    @RequiresApi(Build.VERSION_CODES.O)
    override fun onReceive(context: Context?, intent: Intent?) {
        val smsIntent = intent ?: return
        val appContext = context?.applicationContext ?: return
        // Do something here.
    }
}

实际上,这是一个受限接收器上下文,严格来说不是应用程序上下文... - David

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接