2012-09-20 17 views
23

Ben android için özel bir başlatıcısı yapmaya çalışıyorum ve farklı bir uygulama formu benim nasıl başlatılacağını anlamaya çalışıyorum. Bunun Intents'in oldu yapmanın yolu düşündüm ve burada kendisine bir yazı buldum:Nasıl bir ResolveInfo gelen bir Intent başlatmak için

Open another application from your own (intent)

Gerçekten olsa cevap anlamıyorum! Birisi bana tek bir ResolveInfo dan ResolveInfo tarafından temsil edilen uygulamayı başlatmak için özlü bir snippet veya adımlar dizisi verebilir mi?

cevap

39

Verilen bir ResolveInfolaunchable adlı:

ActivityInfo activity=launchable.activityInfo; 
ComponentName name=new ComponentName(activity.applicationInfo.packageName, 
            activity.name); 
Intent i=new Intent(Intent.ACTION_MAIN); 

i.addCategory(Intent.CATEGORY_LAUNCHER); 
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | 
      Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); 
i.setComponent(name); 

startActivity(i); 

+0

Mükemmel çalışır, teşekkürler! –

+0

herşey yolunda ama her uygulama, burada yönetilmeyen deffrent simge boyutu var –

20

(https://github.com/commonsguy/cw-omnibus/tree/master/Introspection/Launchalot itibaren) bu arada bir yeni Niyet oluşturun.

Intent intent = new Intent(); 
    intent.setClassName(resolveInfo.activityInfo.applicationInfo.packageName, 
      resolveInfo.activityInfo.name); 
    startActivity(intent); 
+1

Wow kolay ve kısa ... –

+1

ikinci satır daha kısa olabilir mi? intent.setClassName (resolInfo.activityInfo.packageName, resolveInfo.activityInfo.name); –

İlgili konular