2016-09-13 17 views
6

Bir Google Duyarlılık API'sı "çit" patladığında bir BroadcastReceiver veya IntentService (ne kadar süren işlemimin süresine bağlı olarak) başlatmak isterim. Mesela, belki de, gün boyunca bir dizi fener çiti aktive ettiğimi (telefonumu yanımda tuttuğumu varsayarak) bilmek istiyorum. Bulduğum tüm örnekler, yayın alıcılarını kodda kaydetmeyi gösteriyor, ancak benim anlayışım, işletim sistemimin çalışmaması durumunda işletim sisteminin yayın göndermesini sağlamak için bildirimde bir yayın alıcısını kaydetmem gerekmesi. Dahası, niyet kimliği özel bir tane gibi görünüyor, bu yüzden en azından bir kez kod aracılığıyla işletim sistemi ile kayıt olmalı tahmin ediyorum?Google Awareness Uygulaması çalışmayan Api etkinlikleri

Sanırım deneme yanılma yöntemiyle bu sorunu çözmek için bir veya daha fazla test uygulaması oluşturmanız gerekecek, ancak bunu deneyen ve sonuçlarınızı paylaşmak isteyen herkesin duyduğu memnuniyeti takdir edeceksiniz! Eğer Manifest dosyasında BroadCastReceiver belirtirseniz

+0

Sorunuz nedir https://developer.android.com/guide/topics/manifest/receiver-element.html yılında

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; } } } } 

diğer bilgiler? Daha spesifik olabilir misiniz? – hanif

cevap

5

Sadece yeterlidir. Manifest <receiver> girişini bildirdikten sonra bile kodda kaydetmeniz gerekmemektedir. Sadece platformu (biz ActivityNotFoundException olsun değilse) yalnızca Manifest dosyasında kaydetmek Yayın Ayrıca sadece Manifest dosyasında kayıt edilebilir aynı şekilde Etkinlikler üstesinden nasıl düşünün.

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

BroadcastReceiver sınıfını uzatın:

Sen gibi alıcıyı ilan etmek gerekir.

+0

Doğru, o kadar uzağa var. Çaba için ödül veren! Hala çitin ısrarlı bir şekilde kaydedilmesini engellemeye devam ediyorum. Son zamanlarda çok fazla zamanım olmadı ama son testlerim, alıcının durmadan önce sadece birkaç kez çağrılacağını gösterdi. Bütün alıcı yapmak bir tost atmaktı. Şimdi bir günlük dosyası ile deneyeceğim. –

+0

Bu, awarness olaylarını engellemek için doğru niyet filtresi midir? Uygulama kapalı olduğunda olayları alamıyorum ... –

+0

@ZivKesten Uygulama çalışmıyorken olamıyorsunuz ??? Bu, uygulamanız doğru olduğunda bunları aldığınız anlamına gelir. Yani yayın için nasıl kayıt yaptırdığın ile ilgili. Manifest dosyasında ancak kodda kaydetmediğinizi ve Uygulama bağlamı yerine Etkinlik bağlamını kullandığınızı tahmin ediyorum. Bazı kod örnekleri senaryonuzu daha iyi anlamanıza yardımcı olur. – Kowshick