Android.intent.action.MAIN kelimesinin anlamı nedir?


86

Pek çok farklı kafa karıştırıcı açıklama gördüm ..

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

Anlamı ne

<action android:name="android.intent.action.MAIN" />

ve

 <category android:name="android.intent.category.LAUNCHER" />

ve

 <category android:name="android.intent.category.DEFAULT" />

Yanıtlar:


74

android.intent.action.MAIN bu aktivitenin uygulamanın giriş noktası olduğu anlamına gelir, yani uygulamayı başlattığınızda bu aktivite oluşturulur.

Gönderen docs

ACTION_MAIN with category CATEGORY_HOME -- Launch the home screen.

Ayrıca buradan

Aktivite Eylem Ana giriş noktası olarak başlayın, veri almayı beklemiyor.

android.intent.category.DEFAULT 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. Etkinliğiniz, kendisine belirli bir kategori atanmadığında örtük bir Amaç tarafından başlatılmışsa, Amaç filtresi bu kategoriyi içermelidir.

android.intent.category.LAUNCHER

kategori - Yürütülecek eylem hakkında ek bilgi verir.

CATEGORY_LAUNCHER Başlatıcı'da üst düzey bir uygulama olarak görünmesi gerektiği anlamına gelir

Dokümanlara bakın ..

  1. http://developer.android.com/reference/android/content/Intent.html
  2. http://developer.android.com/guide/topics/manifest/action-element.html

3
Hayır, MAIN tek başına "aktiviteyi evde başlatmaz". MAINbirçok kullanım alanına sahiptir.
CommonsWare

94

ACTION_MAINbaşvuru için bir giriş noktası olarak kabul edilir. Genellikle, ana ekranın başlatıcısında veya kendisini bir başlatıcı olarak kabul eden başka herhangi bir şeyde görünmesi gereken bir etkinliği belirtmek için CATEGORY_LAUNCHERin an ile birleşir <intent-filter>. Bu tür "başlatıcılar" bu tür etkinlikleri bulmak için PackageManagerkullanarak sorgulayabilir queryIntentActivities()ve bunları kullanıcıya gösterebilir.

Bununla birlikte, ACTION_MAINdiğer özel amaçlar için diğer kategorilerle birlikte kullanılabilir. Örneğin, CATEGORY_CAR_DOCKile ACTION_MAIN, kullanıcı telefonunu üretici tarafından sağlanan bir araç yuvasına düşürdüğünde gösterilmeye aday olarak kabul edilmesi gereken bir etkinliği belirtir.

Bir Intentile kullanıldığında startActivity(), Intentzaten bir kategoriye yerleştirilmemişse, içine yerleştirilir CATEGORY_DEFAULT. Bu nedenle, başka hiçbir şey olmasa da kullanarak bazılarını<activity> <intent-filter> belirtmek gerekir . <category><category android:name="android.intent.category.DEFAULT" />


1
oy verildi! Bunu cevaplayacağınızı biliyordum ve beklendiği gibi net ve öz bir cevap okumayı bekliyordum. teşekkürler
Spurdow

6
Hâlâ ikisine de neden ihtiyacımız olduğunu açıklamadın. Demek istediğim, EYLEM ANA = GİRİŞ NOKTASI, anladım. CATEGORY_LAUCHER = Ana ekranın başlatıcısında bir etkinliğin görünmesi gerektiğini belirtmek için. Bu iki cümle aynı, sadece farklı bir şekilde ifade edilmiş, değil mi?
FRR

9
@feresr: Hayır, değiller. Bir bir örnek sağlar ikinci paragrafında da dahil cevabı okuyarak anlayabilirsiniz farklı kullanımı ACTION_MAINanlamına değil , bir ana ekran tarzı başlatıcısı içerir.
CommonsWare

2
@ vgokul129: Çünkü ana ekran başlatıcılar özellikle <intent-filter>hem <action android:name="android.intent.action.MAIN" />ve hem de <category android:name="android.intent.category.LAUNCHER" />.
CommonsWare

2
@ vgokul129: "Başlatıcıda simgeye tıklama sırasında kesin olmak gerekirse, hiçbir startActivity (niyet) çağırmamalıdır" - yalnızca bu tür bir yetenek sunan kendi başlatıcınızla kendi ana ekranınızı yazarsanız. Bir ana ekran başlatıcısının davranışı, o ana ekranın uygulayıcılarına bağlıdır. Bir başlatıcının temel rolü bu olduğundan çoğu, reklamı yapılan başlatılabilir etkinliklere başlamaya odaklanır. finish()Hemen çağıran bir etkinliğe sahip olabilirsiniz , ancak kullanıcılar uygulamanızın bozuk olduğunu düşüneceklerdir.
CommonsWare

2
<action android:name="android.intent.action.MAIN"/>

Bu uygulama için ana faaliyet

 <category android:name="android.intent.category.LAUNCHER" />

BAŞLATICI kategorisindedir, yani ana ekran gibi kendisini bir "başlatıcı" olarak düşünen herhangi bir şeyde bir simge alır.

 <category android:name="android.intent.category.DEFAULT" />

StartActivity () çağrısı, başka bir kategori belirtilmezse her zaman VARSAYILAN kategorisini ekler.

Genellikle android.intent.category.DEFAULTbaşka Kategorileriniz olsa bile ekleyin . Bu, Amaç Kullanmaya başlarken İstekte Bulunan Amaç herhangi bir Kategori sağlamazsa startActivity(intent), Alma Etkinliğinizin de bu Amaçları alabileceğini garanti eder .

Kaynak: Android Geliştirmeye Yönelik Meşgul Kodlayıcılar Kılavuzu

https://commonsware.com/Android/

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.