Android - 从静态'帮助'方法注册接收器(无法获取上下文)?

问题描述 投票:1回答:1

现在无法在Manifest中设置PROVIDERS_CHANGED intent-filter,我正在动态地进行。 但是,我需要在多个位置注册/取消注册动态编码的Receiver。 因此,我正在创建一个“Helper”类,其中包含一个带有Receiver代码的静态方法。 我的问题:我似乎无法弄清楚如何获取上下文以注册/取消注册接收器。 这是我目前的代码:

public class GpsReceiverHelper {

public static void gpsReceiverCode() {

    IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction("android.location.PROVIDERS_CHANGED");

    final BroadcastReceiver gpsReceiver = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {

            if (intent.getAction() != null &&
                    intent.getAction().matches("android.location.PROVIDERS_CHANGED")) {

                //  RECEIVER CODE HERE

            }
        }
    };
    this.registerReceiver(gpsReceiver, intentFilter);
    //  THIS IS WHERE I CAN'T GET A CONTEXT (USING "this" OR OTHERWISE)

}
}

我的问题: (A) - 我怎样才能在这里检索context? (B) - 使用public static方法创建一个帮助类是正确的方法吗?

java android broadcastreceiver android-context android-broadcast
1个回答
1
投票

我怎样才能在这里检索上下文?

将其作为参数传递(public static void gpsReceiverCode(Context context))。

我需要在多个位置注册/取消注册动态编码的Receiver

当您的接收器在清单中时,它在一个地方“注册”。因此,当您动态地执行此操作时,可以在一个位置注册它(例如,自定义Application子类)。

用正确的方法创建一个带有公共静态方法的助手类吗?

可能不是,只要您可能不需要在2个以上的地方使用此代码。

© www.soinside.com 2019 - 2024. All rights reserved.