Глобальный фильтр намерений получателя Awareness API

Я реализую API-интерфейс Google Awareness в приложении для Android, но ни один из примеров или руководств не показывает, как прослушивать события API, когда приложение не работает или находится в фоновом режиме. Я написал глобальный приемник на основе ответа здесь

    <receiver android:name=".MyFenceReceiver" >
   <intent-filter>
     <action android:name="android.intent.action.FENCE_RECEIVER_ACTION" />
    </intent-filter>
</receiver>

Однако, поскольку он не работает, я подозреваю, что не знаю правильного фильтра намерений для перехвата событий Awareness. Кто-нибудь знает правильный фильтр намерений, или, если это не моя проблема, как я могу перехватывать события API, когда приложение не работает или работает в фоновом режиме с глобальным приемником?


person Ziv Kesten    schedule 19.10.2016    source источник


Ответы (1)


Итак, ответ в конечном итоге состоял в том, что вы должны зарегистрировать этот приемник в манифесте и задать ему свой собственный фильтр намерений, например:

   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.

где "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";

И в манифесте вы указываете приемник следующим образом:

 <receiver android:name=".FenceReceiver" >
        <intent-filter>
            <action android:name="'YOUR_PACKGE_NAME_HERE'FENCE_RECEIVER_ACTION" />
        </intent-filter>
    </receiver>

Нет необходимости нигде отменять регистрацию приемника.

person Ziv Kesten    schedule 23.10.2016
comment
Воспользовался вашим методом. Работает, когда приложение находится на переднем плане, а также работает, когда я нажимаю кнопку «Домой», а приложение больше не находится на переднем плане. Однако, когда я закрываю приложение из списка последних приложений, оно больше не работает. Есть идеи, как заставить его работать, когда приложение закрыто? то есть триггер запускает приложение или что-то в этом роде? - person Ayo Makanjuola; 08.03.2017
comment
@AyoMakanjuola, ты понял, как это сделать? - person Emre Akcan; 03.07.2020