I see now, the method i would like to use in 1.5 is setPackage not
setComponent; sorry for the misunderstanding.
I don't want to use setComponent because i don't know the classname to use
(and i don't want to hardcode it as i guess it might change as it is an
external application). And setPackage is only available since API level 4 :(

I have used your Launchalot exemples to dynamically retrieve the classname.
Here is what i did that seems to work:

            String packageName = "com.foo.blabla";
            Intent mainApps = new Intent(Intent.ACTION_MAIN);
            mainApps.addCategory(Intent.CATEGORY_LAUNCHER);
            List<ResolveInfo> activities =
act.getPackageManager().queryIntentActivities(mainApps, 0);
            Iterator<ResolveInfo> it = activities.iterator();
            while (it.hasNext()) {
                ResolveInfo info = it.next();
                ActivityInfo activity=info.activityInfo;
                if (activity.packageName.equalsIgnoreCase(packageName )) {
                    Intent intent=new Intent(Intent.ACTION_MAIN);
                    intent.addCategory(Intent.CATEGORY_LAUNCHER);

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
                    ComponentName name = new
ComponentName(activity.packageName, activity.name);
                    intent.setComponent(name);
                    act.startActivity(intent);
                    return true;
                }
            }
            // handle not found case


Any shorter and faster way (and compatible with 1.5) to do it is welcome :)


2010/5/12 Thierry Legras <tleg...@gmail.com>

> Hi Mark,
> Yes sorry, my mail was not clear but you got it.
> I was really sure this was available from 1.6. It seems I need to have a
> rest! I will try that tomorrow.
>
> Thanks you both for the lightning fast help :)
> Thierry
>
> Le 12 mai 2010, 12:32 AM, "Mark Murphy" <mmur...@commonsware.com> a
> écrit :
>
> Thierry Legras wrote: > How can i start an application just knowing the
> package name, not the > clas...
> There is no concept in Android of "start an application". There is
> "start an activity", even "start an activity that appears in the Launcher".
>
> > Ok, there is Intent.setComponent solution would be what i need ... if it
> > was compatible with 1....
> Not to mention the fact that this will not work by itself.
>
> BTW, setComponent() most certainly works with Android 1.5, since that
> method existed since API Level 1 (a.k.a., Android 1.0).
>
> > I guess i have to play with getPackageManager() but how can i use it?
> 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);
>
> See:
>
>
> http://github.com/commonsguy/cw-advandroid/tree/master/Introspection/Launchalot/
>
> --
> Mark Murphy (a Commons Guy)
> http://commonsware.com | http://github.com/commonsguy
> http://commonsware.com/blog | http://twitter.com/commonsguy
>
> Android Consulting: http://commonsware.com/consulting
>
> --
>
> You received this message because you are subscribed to the Google Groups
> "Android Developers" group...
>
>


-- 
Thierry.

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to