2011-07-26 16 views
11

Genellikle bir Android cihazında bir başlatıcı var. Ancak bazen sadece bir tanesi aktifken kullanıcılar birkaç tane yüklerler.Hangi başlatıcısı çalışıyor?

Android cihazımda hangi başlatıcının etkin olduğunu nasıl kontrol edebilirim?

Teşekkürler.

cevap

22

ana ekran (Intent için javadoc itibaren) kategorisinde CATEGORY_HOME ile IntentACTION_MAIN ile başlatılır. Hangi uygulamanın başlayacağını öğrenmek için bu amaçla bir ResolveInfo kullanın.

Bu, varsayılan Ev uygulamasını verecektir: Bir çalıştığı bilmek istiyorsanız ActivityManager yavaş olduğundan, daha fazla zaman alacak, Şimdi

final Intent intent = new Intent(Intent.ACTION_MAIN); 
intent.addCategory(Intent.CATEGORY_HOME); 
final ResolveInfo res = getPackageManager().resolveActivity(intent, 0); 
if (res.activityInfo == null) { 
    // should not happen. A home is always installed, isn't it? 
} else if ("android".equals(res.activityInfo.packageName)) { 
    // No default selected  
} else { 
    // res.activityInfo.packageName and res.activityInfo.name gives you the default app 
} 

:

// instead of the best, query all activities that match: 
final List<ResolveInfo> list = ((PackageManager)getPackageManager()).queryIntentActivities(intent, 0); 
// TODO from there, use ActivityManager to know which one is running and is in the list 
+2

varsayılan başlatıcısı ve yüklü birden fazla varsa, o zaman com.android.internal.app.ResolverActivity' 'gibi bir şey çıkacak söz gerekiyor gibi otherwwise sen neden alacak. –

3
private String findLauncherPackageName(){  
    final Intent intent = new Intent(Intent.ACTION_MAIN); 
    intent.addCategory(Intent.CATEGORY_HOME); 
    final ResolveInfo res = getPackageManager().resolveActivity(intent, 0); 
    Log.e("ANDRO_ASYNC", String.format("findLauncherPackageName()%s",res.activityInfo.packageName)); 
    return res.activityInfo.packageName; 
} 
+1

Bu kod, etkin başlatıcıyı her zaman döndürmez, varsa, varsayılan başlatıcıyı döndürür. – THelper

0

Etkin başlatıcının başlığını yalnızca varsayılan olarak işaretlenmişse kontrol edebilirsiniz.

com.android.internal.app.ResolverActivity 
İlgili konular