我希望在Google Awareness API“围栏”启动时启动BroadcastReceiver或IntentService(取决于我的最终处理需要多长时间)。例如,也许我想知道一天中我激活了一组信标围栏的次数(假设我随身携带手机)。我发现的所有示例都显示了在代码中注册广播接收器的过程,但是我的理解是,如果我的应用未运行,我将需要在清单中注册广播接收器,以便OS向其发送广播。此外,意图ID似乎是自定义的ID,所以我想我必须至少通过代码在操作系统中注册一次它?
我猜想我将不得不创建一个或多个测试应用来通过反复试验来解决这个问题,但是一定会收到任何尝试过并愿意分享您结果的人的来信,我们将不胜感激!
只要在清单文件中指定BroadCastReceiver,就足够了。
即使声明了Manifest<receiver>
条目,也不必在代码中注册它。只要考虑一下平台如何处理活动,就可以只在清单文件中注册它(如果没有,我们就获得ActivityNotFoundException),就像广播也可以只在清单文件中注册一样。
您需要像这样声明接收方:
<receiver android:name=".MyFenceReceiver" >
<intent-filter>
<action android:name="android.intent.action.FENCE_RECEIVER_ACTION" />
</intent-filter>
</receiver>
扩展BroadcastReceiver类。
public class MyFenceReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
FenceState fenceState = FenceState.extract(intent);
if (TextUtils.equals(fenceState.getFenceKey(), "geofence")) {
switch(fenceState.getCurrentState()) {
case FenceState.TRUE:
break;
case FenceState.FALSE:
break;
case FenceState.UNKNOWN:
break;
}
}
}
}
有关更多信息,请参见https://developer.android.com/guide/topics/manifest/receiver-element.html
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句