2011-11-28 33 views
15

Esasen bir Ana ekran olan ve varsayılan Ana Ekran ("kiosk" - uygulama) olarak kullanılması gereken bir buissness uygulaması geliştiriyorum.Uygulamamın varsayılan başlatıcı olup olmadığını nasıl kontrol edebilirim

Başlatıcı'mın varsayılan Başlatıcı olup olmadığını kontrol etmenin herhangi bir yolu var mı? Teşekkürler!

Ps. Burada Benzer örnek, ancak GPS-ayar kontrol

LocationManager alm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); 
if (alm.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER)) { 
    Stuffs&Actions; 
} 

cevap

24

Sen PackageManager'dan tercih edilen aktivitelerin listesini alabilir. getPreferredActivities() yöntemini kullanın.

boolean isMyLauncherDefault() { 
    final IntentFilter filter = new IntentFilter(Intent.ACTION_MAIN); 
    filter.addCategory(Intent.CATEGORY_HOME); 

    List<IntentFilter> filters = new ArrayList<IntentFilter>(); 
    filters.add(filter); 

    final String myPackageName = getPackageName(); 
    List<ComponentName> activities = new ArrayList<ComponentName>(); 
    final PackageManager packageManager = (PackageManager) getPackageManager(); 

    // You can use name of your package here as third argument 
    packageManager.getPreferredActivities(filters, activities, null); 

    for (ComponentName activity : activities) { 
     if (myPackageName.equals(activity.getPackageName())) { 
      return true; 
     } 
    } 
    return false; 
} 
+0

İyi çalışıyor. Paket adını üçüncü parametre olarak kullandım ve daha sonra "etkinlikler" listesinin uzunluğunu kontrol ettim. 0 ise fırlatıcı değil demektir. –

+0

Bu davalarda hangi durumlarda "etkinliklerin" birden fazla öğe ile doldurulacağı? –

+2

[getPreferredActivities] (http://developer.android.com/reference/android/content/pm/PackageManager.html#getPreferredActivities%28java.util.List%3Candroid.content.IntentFilter%3E%%20java.util için dokümantasyon .List% 3Candroid.content.ComponentName% 3E,% 20java.lang.String% 29), ilk bağımsız değişkenin, yöntem tarafından doldurulan boş bir liste olması gerektiğini önerir. Örneğinizde halihazırda bulunduğu bir listeyi verirken davranış tam olarak nedir? – achoo5000

5

Bulunan cevabım: Etkinliğimi varsayılan başlatıcısı olup olmadığını O bana söyler

Which launcher is running?

..

+0

sadece size söyler. Örneğin hem Google Now Launcher hem de NOVA Launcher çalışıyorsa, her ikisi de iade edilen listede olacaktır. –

0
boolean isHomeApp() { 
    final Intent intent = new Intent(Intent.ACTION_MAIN); 
    intent.addCategory(Intent.CATEGORY_HOME); 
    final ResolveInfo res = getPackageManager().resolveActivity(intent, 0); 
    if (res.activityInfo != null && getPackageName() 
      .equals(res.activityInfo.packageName)) { 
     return true; 
    } 
    return false; 
} 
0

Kotlin versiyonu: Bir başlatıcısı çalışıyorsa

val Context.isMyLauncherDefault: Boolean 
    get() = ArrayList<ComponentName>().apply { 
    packageManager.getPreferredActivities(
     arrayListOf(IntentFilter(ACTION_MAIN).apply { addCategory(CATEGORY_HOME) }), 
     this, 
     packageName 
    ) 
    }.isNotEmpty() 
İlgili konular