2012-10-23 22 views
14

Uygulamamdan etkinliği başlatmak için başlatıcı etkinliği adını almam gerekiyor. Herhangi çözümBaşlatıcıyı edinin Android uygulamasının etkinlik adı

+0

ComponentName adı = Yeni ComponentName (Paket, launcheractivity); \t \t \t Niyet i = new Intent (Intent.ACTION_MAIN); i.addCategory (Intent.CATEGORY_LAUNCHER); i.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK \t | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); i.setComponent (name); _context.startActivity (i); Burada ComponentName için launcheractivity adını istiyorum. – user1767260

+0

Belirli bir uygulamanın veya tüm yüklü uygulamaların başlatıcısı etkinliği? –

+0

Yüklü uygulamaların başlatıcısı etkinliği – user1767260

cevap

20

kullanın şu kod tüm paketlerin başlatıcısı aktivite almak için: Geç

 final PackageManager pm = getPackageManager(); 

     Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); 
     mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); 

     List<ResolveInfo> appList = pm.queryIntentActivities(mainIntent, 0); 
     Collections.sort(appList, new ResolveInfo.DisplayNameComparator(pm)); 

     for (ResolveInfo temp : appList) { 

      Log.v("my logs", "package and activity name = " 
        + temp.activityInfo.packageName + " " 
        + temp.activityInfo.name); 


     } 
+0

benim için çalışmalarına teşekkürler –

44

ama daha iyi yolu Bir aktivite başlatmak için kesin niyet

PackageManager pm = getPackageManager(); 
Intent intent=pm.getLaunchIntentForPackage(pacakgeName); 
startActivity(intent); 
8

bile verecek Yukarıdaki yanıtlar doğrudan OP'nin sorusunu yanıtlasa da iki sentimi eklemek istiyorum:

/** Backwards compatible method that will clear all activities in the stack. */ 
public void startLauncherActivity(Context context) { 
    PackageManager packageManager = context.getPackageManager(); 
    Intent intent = packageManager.getLaunchIntentForPackage(context.getPackageName()); 
    ComponentName componentName = intent.getComponent(); 
    Intent mainIntent = IntentCompat.makeRestartActivityTask(componentName); 
    context.startActivity(mainIntent); 
} 

Burada sadece uygulamanın başlatıcı aktivitesini değil, aynı zamanda aktivitelerin tüm backstack'larını da temizliyorum (fırlatıcı aktivitesini tetiklediğimde gerçekten ihtiyacım olan şey). Örneğin, süresi dolmuş auth jetonu olarak adlandırıyorum.

Önemli olan, aksi takdirde tek tek API sokulur Intent bayrak Intent.FLAG_ACTIVITY_CLEAR_TASK, başvurmak sahiptir IntentCompat kullanmaktır 11.

İlgili konular