2011-09-09 38 views
21

Birisi bana Intent kategorilerinin amacını açıklayabilir misiniz? Ne zaman kendim yapmalıyım? Kitabımda Intent kategorileri hakkında yazılan tek şey niyetleri gruplandırabilmeleridir.Niyet kategorilerinin amacı nedir?

+0

offTopic: Biz kategorilerdeki uygulama kategorilerine göre kategorilerdeki kategorileri kategorilere ayırabiliriz. –

cevap

33

Kategorinin tek başına kullanılamaz, bir "implicit intent"intent-filter içinde olası bir hedefi açıklamak için kullanılırlar.Hangi sınıfı/etkinliği başlatmak istediğinizi ve startActivity() veya startActivityForResult()'u kullandığınızı biliyorsanız, buna "açık amaç" denir.

Burada örtülü niyetler nasıl çalıştığını bir benzetme:

büyük bir odada oturuyor ve hiçbir şey yapmadan tüm uygulamalarınızı düşünün. Sonra, başka bir uygulama, Dropbox'ın bir PDF dosyasını açmak için birisine ihtiyacı olduğunu varsayalım. Dropbox uygulaması sisteme gider ve "Hey, birisi 'un bu PDF dosyasını açması gerekiyor ..." diyor (Bu, dolaylı amacı gönderiyor).

Sistem artık odaya gidip " bir PDF dosyası görüntüleyebiliyor musunuz?" Diye bağırıyor. Ayakta durabilecek uygulamalar ve sistemi bunları görüyor (bu uygulamaların eşleşen bir niyet kategorisi ile bir etkinliği var). Eğer uygulamalar Etkinlik/Yayın Alıcılarının/Hizmetler bazı mevcut dışında olmak için Complete action using


: Daha sonra size uygulamalardan birini seçebileceği bir iletişim kutusu sunar

Sınırlar, Android Manifest'i bir "niyet filtresi" olarak bildirmek için kullanabilir, böylece sistem veya uygulama bir "örtülü niyet" ile eşleştiğinde açılır.

Sen başlatıcıdan açılmalıdır Aktivitesi (örneğin) bunu:

<activity android:name=".SomeActivity"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

Bu Androidlerin Launcher tarafından tetiklenen ACTION_MAIN -Eylem (CATEGORY_LAUNCHER) dinler.

Sen "niyet filtre" iki çocuk unsurları vardır:

  1. action. Bu, "niyet filtresinin" hangi eylemi dinlemesi gerektiğini belirtir. Bir veya daha çok category s. Bu, etkinliğin nasıl çağrılması gerektiğini belirtir. category s

bir Aktivite anlatır android.intent.category.DEFAULT, (örneğin), tam ekran modunda, normal olarak açılacak edilebilir. Örneğin, android.intent.category.TAB-kategorisi, bu aktiviteyi TabActivity'da bir sekme olarak bildirir, böylece yalnızca bir Sekme olarak açılabilir.

Başka bir örnek ise, etkinliği Ayarlar-Etkinlik olarak bildiren android.intent.category.PREFERENCE -kategori eklenmesidir.


Kendi category s bildirme mümkün ne de gereklidir. Ayrıca, bu olayların Sistem/Başka Bir Uygulama tarafından tetiklendiğini ve yalnızca tetiklendiğinde ne zaman ve nasıl tepki vermek istediğinizi belirleyebileceğinizi anlamanız gerekecektir.

+0

Bir uri veri şeması/host modeline dayalı bir niyetle eşleştirmek için gereken CATEGORY_DEFAULT'ı eklemeyi unutmuşsunuzdur. –