Uygulama belirli bir Intent'in işlenme olasılığını nasıl belirler?
sobes.tech yapay zeka
AI'dan gelen yanıt
Uygulama, Intent'in içeriğini, bileşenlerin (Activity, Service, BroadcastReceiver) manifestosunda belirtilen bilgilerle karşılaştırmaya dayalı bir Intent çözümleme mekanizması aracılığıyla Intent'in işlenme olasılığını belirler.
Ana adımlar:
-
Uygun filtreleri (Intent Filtreleri) Arama: Sistem,
AndroidManifest.xmliçinde yayınlanan ve<intent-filter>bloğu Intent içeriğiyle eşleşen bileşenleri arar.<!-- Bir Activity için örnek intent filtresi --> <activity android:name=".SomeActivity"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="text/plain" /> </intent-filter> </activity> -
Action ile Eşleştirme: Intent,
intent-filteriçindeki eylemlerden biriyle eşleşen bir<action>içermelidir. -
Kategori ile Eşleştirme: Intent,
<category>öğelerini içermeli ve bu kategoriler,intent-filteriçindeki kategorilerin alt kümesi olmalıdır. Eğer Intent kategori içermiyorsa,android.intent.category.DEFAULTiçeren filtrelerle eşleşir. -
Data ile Eşleştirme (Uri ve Mime Type): Intent, Uri ve/veya Mime Type içerebilir. Bu veriler,
<scheme>,<host>,<port>,<path>,<pathPattern>,<pathPrefix>Uri şeması ve<mimeType>ile uyumlu olmalıdır, ki bunlarintent-filteriçinde belirtilmiştir.Intent Data Bölümü <data>içindeki karşılık gelen öğeScheme <scheme>Authority (Host:Port) <host>,<port>Path <path>,<pathPattern>,<pathPrefix>Mime Type <mimeType> -
Extras ile Eşleştirme (nadiren, işleme olasılığını belirlemek için): Extras bileşen tarafından kullanılabilir, ancak genellikle Intent'in ilk çözümlemesini etkilemez.
Gizli olmayan Intent'ler (startActivity(intent), bindService(intent), sendBroadcast(intent)) için sistem, uygun tüm bileşenleri bulur. Birden fazla Activity bulunursa, sistem kullanıcıya seçim diyaloğu gösterebilir (