“Android.intent.category.DEFAULT” un amacı nedir?


104

android.intent.category.DEFAULTAmaç Filtrelerinin Kategori alanında kullanmanın amacı nedir ?


2
Bunun uygulamanız için varsayılan giriş noktası olduğunu söylüyorsunuz. Bakınız: developer.android.com/reference/android/content/…
Blundell

@Blundell: Öyleyse, örtük bir amaç gelirse, amaç filtresindeki kategorisi varsayılan olarak olan bir etkinlik çağrılacak mı?
Pravy

1
Bunun evet kullanma etkinliği olduğunu ima etmek için kullanıldığına inanıyorum "paketlerde belirtilen amaç filtrelerinde kullanmak içindir"
Blundell

birden fazla etkinlik kategorileri olarak varsayılan içeriyorsa, ilgili amaç filtrelerinde hangi etkinlik çağrılacaktır?
Pravy

Farklı niyet filtrelerine sahiplerse, amaca bağlı olacaktır.
Blundell

Yanıtlar:


112

Kategoriler örtük Amaçlar için kullanılır. Dolayısıyla, Aktiviteniz, aktiviteye başka bir kategori atanmadığında örtük bir Amaç ile başlatılabiliyorsa, aktivitenin Amaç filtresi bu kategoriyi içermelidir. (Amaç filtresinde başka kategorileriniz olsa bile). Aktivitenizin başka bir Kategori ile çağrılması gerektiğinden eminseniz , Varsayılanı kullanmayın.

Kategoriyi Varsayılan Olarak Ayarlamak, bu Etkinliğin uygulamanız başladığında varsayılan olarak kullanılacağı anlamına gelmez. Etkinlik sadece "o sisteme diyor marş Niyet kategorisi için ayarlanmış olsa bile Oh, başlamış olabilir Hiçbir şey hiç! "


27
Bu aslında anlaşılır bir açıklamaydı. Bu yanıtı dokümanlarla karşılaştırın: "Etkinliğin, bir veri parçası üzerinde gerçekleştirilmesi için varsayılan eylemin (orta basma) bir seçenek olup olmayacağını ayarlayın. Bunu ayarlamak, bazılarında bir eylem gerçekleştirirken ayarlanmamış tüm etkinlikleri kullanıcıdan gizleyecektir. data "Anlaşılır bir açıklama yazmak ne kadar zor olabilir ...
Andreas

Herhangi bir niyet filtresi olmayan bir etkinlik hala örtük bir etkinlik olarak adlandırılabildiğinden, isteğe bağlı gibi görünse de, yetkisi konusunda emin değilim
humblerookie

6
Belgeler artık daha net IMO: Android, otomatik olarak CATEGORY_DEFAULT kategorisini startActivity () ve startActivityForResult () 'a iletilen tüm örtük amaçlara uygular. Dolayısıyla, etkinliğinizin örtük niyetler almasını istiyorsanız, amaç filtrelerinde "android.intent.category.DEFAULT" için bir kategori içermesi gerekir.
shkschneider

2
@humblerookie. Denedim ve VARSAYILAN kategorisi olmadan çalışmıyor. Bana inanmıyorsan kendini test et.
Bob Ueland

2
Sadece tüm öğreticiler bu şekilde yazılsaydı. 2018'de neden hala ahşap dil ​​kullanıyoruz?
SudoPlz

24

Bu kategori esas olarak örtük amaçlar için kullanılır. Etkinliğiniz örtük bir niyetle başlatılmak istiyorsa, bu kategoriyi filtresine dahil etmelidir.

"Varsayılan" teriminin "varsayılan aday " olarak anlaşılması gerektiğini düşünüyorum . Bir veri parçası üzerindeki işlem birden çok etkinliğe çözümlenirse, Android tüm adayları kullanıcıya sunar ve kullanıcı tercih ettiği varsayılanı seçebilir.

Referans:

http://developer.android.com/guide/components/intents-filters.html

Bu sayfadan çıkarın:

Android ,startActivity () 'ye iletilen tüm örtük amaçlara en az bir kategori içeriyormuş gibi davranır: "android.intent.category.DEFAULT" (CATEGORY_DEFAULT sabiti). Bu nedenle, örtük amaç almak isteyen etkinlikler, amaç filtrelerinde "android.intent.category.DEFAULT" içermelidir. ("Android.intent.action.MAIN" ve "android.intent.category.LAUNCHER" ayarlarına sahip filtreler istisnadır. Yeni görevler başlatan ve başlatıcı ekranında gösterilen etkinlikleri işaretlerler. "Android.intent Kategori listesinde .category.DEFAULT ", ancak buna gerek yoktur.)


@Comptrol, cevabınız artık aşağıda değil. Yükseliyor. :-)
Ellen Spertus

Evet, ama eski haline döndürdüm. Bu yüzden genel olarak hiçbir şeyi değiştirmedim.
Özgür

1
Bu cevabı mevcut durumu anlama niyet filtrelerim için daha yararlı buluyorum. teşekkür ederim.
Neon Warge

1

Aslında, uygulama çalışırken diğer etkinliklerinizin çağrılabileceğinden emin olmak içindir. BAŞLATICI, kendisine sahip olan etkinliği başlayan ilk etkinlik yapacaktır. Diğer etkinliklere ulaşmak amacıyla amaçların kullanılması için, bunların VARSAYILAN konularak "gerçek" etkinlikler olarak listelenmesi gerekir. Bu bildiğim kadarıyla yanlışsa benden alıntı yapmayın.


3
İddialarınız için referanslar sağlamaya çalışmalısınız. "yanlışsa bana alıntı yapma" bu kuralı geçersiz kılmanıza izin vermez.
verybadalloc

Sahip olduğum referans, Android kodlama üzerine çalışırken üzerinde çalıştığım bir proje. Kaynak dosyaları istiyorsanız, memnuniyetle gönderebilirim.
CHT

1

Context.startActivity () ile bulunabilmeleri için etkinliklerin CATEGORY_DEFAULT'u desteklemesi gerekir.

Örtülü amaçlar almak için, amaç filtresine CATEGORY_DEFAULT kategorisini dahil etmeniz gerekir. StartActivity () ve startActivityForResult () yöntemleri, tüm amaçları CATEGORY_DEFAULT kategorisini bildirmiş gibi ele alır. Bunu niyet filtremizde beyan etmezsek, faaliyetimize hiçbir örtük niyet çözülmez.


0

Bazı işlemleri varsayılan eylem olarak bildirmek için kullanılır (adından da anlaşılacağı gibi). Bir not defteri uygulamamız olduğunu düşünelim (android not defteri örneğine başvurarak). Uygulamanın ilk sayfası tüm not defteri dosyalarının bir listesinden oluşur. Bir not defteri dosyası seçildiğinde, notu düzenleme, notu silme vb. İşlemlerden biri yapılabilir. Ancak düzenlemeyi varsayılan eylemim olarak yapmak istiyorum, yani klavyemin orta düğmesine bastığımda düzenleme penceresi açık olmalı.


1
Android Not Defteri örneğine bakarsanız, tüm Etkinlikler varsayılan olarak işaretlenir: developer.android.com/reference/android/content/Intent.html
Peter Ajtai

0

https://developer.android.com/guide/components/intents-filters

Örtülü amaç almak için, amaç filtresine CATEGORY_DEFAULT kategorisini dahil etmeniz gerekir. StartActivity () ve startActivityForResult () yöntemleri, tüm amaçları CATEGORY_DEFAULT kategorisini bildirmiş gibi ele alır. Bu kategoriyi niyet filtrenizde beyan etmezseniz, faaliyetinize hiçbir örtülü niyet çözülmez.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.