Android - 从静态 'helper' 方法注册接收器(无法获取上下文)?
Android - Registering a Receiver from a Static 'helper' Method (can't get context)?
现在 PROVIDERS_CHANGED
intent-filter 无法在 Manifest 中设置,我正在动态设置。
但是,我需要在多个地方 register/unregister 动态编码的接收器。
因此,我正在创建一个 "Helper" Class,其中包含一个带有 Receiver 代码的静态方法。
我的问题: 我似乎无法弄清楚如何获取上下文以便 register/unregister 接收者。
这是我当前的代码:
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
方法创建助手 class 是正确的方法吗?
How can I go about retrieving a context here?
作为参数传入(public static void gpsReceiverCode(Context context)
)。
I need to register/unregister the dynamically coded Receiver in multiple places
当您的接收器在清单中时,它 "registered" 在一个地方。因此,当您动态执行时,您可以在一个地方注册它(例如,自定义 Application
子类)。
Is creating a helper class with a public static method the right way to be doing this?
可能不需要,因为您可能不需要在 2 个以上的地方使用此代码。
现在 PROVIDERS_CHANGED
intent-filter 无法在 Manifest 中设置,我正在动态设置。
但是,我需要在多个地方 register/unregister 动态编码的接收器。
因此,我正在创建一个 "Helper" Class,其中包含一个带有 Receiver 代码的静态方法。
我的问题: 我似乎无法弄清楚如何获取上下文以便 register/unregister 接收者。
这是我当前的代码:
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
方法创建助手 class 是正确的方法吗?
How can I go about retrieving a context here?
作为参数传入(public static void gpsReceiverCode(Context context)
)。
I need to register/unregister the dynamically coded Receiver in multiple places
当您的接收器在清单中时,它 "registered" 在一个地方。因此,当您动态执行时,您可以在一个地方注册它(例如,自定义 Application
子类)。
Is creating a helper class with a public static method the right way to be doing this?
可能不需要,因为您可能不需要在 2 个以上的地方使用此代码。