Awareness API全局接收器意图过滤器

Ziv*_*ten 1 android intentfilter android-broadcastreceiver google-awareness

我正在Android应用程序中实现谷歌Awareness API,但没有一个示例,也没有指南,显示如何在应用程序关闭或在后台收听API事件.我根据这里的答案写了一个全球接收器

    <receiver android:name=".MyFenceReceiver" >
   <intent-filter>
     <action android:name="android.intent.action.FENCE_RECEIVER_ACTION" />
    </intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)

但是,由于它不起作用,我怀疑我不知道用于拦截Awarness事件的正确意图过滤器.有没有人知道正确的意图过滤器,或者如果这不是我的问题,我如何在应用程序关闭时或在全局接收器的后台拦截API事件?

Ziv*_*ten 5

好的,所以答案最终是你必须在清单中注册这个接收器并给它你自己的意图过滤器,如下所示:

   Intent intent = new Intent(Constants.Requests.FENCE_RECEIVER_ACTION);
                    mPendingIntent =
                            PendingIntent.getBroadcast(BaseActivity.this, 0, intent, 0);

                    // The broadcast receiver that will receive intents when a fence is triggered.
Run Code Online (Sandbox Code Playgroud)

其中"FENCE_RECEIVER_ACTION"是这样的:

// The intent action which will be fired when your fence is triggered.
    public final static String FENCE_RECEIVER_ACTION =
            BuildConfig.APPLICATION_ID + "FENCE_RECEIVER_ACTION";
Run Code Online (Sandbox Code Playgroud)

在清单中你把接收器放在这样:

 <receiver android:name=".FenceReceiver" >
        <intent-filter>
            <action android:name="'YOUR_PACKGE_NAME_HERE'FENCE_RECEIVER_ACTION" />
        </intent-filter>
    </receiver>
Run Code Online (Sandbox Code Playgroud)

无需在任何地方取消注册接收器.