Launch Application

598 views
Skip to first unread message

bklik

unread,
Mar 12, 2009, 8:21:20 AM3/12/09
to Android Developers
I want to basically create an application launcher. How do do this?
Shouldn't the following just work?

PackageManager pm = this.getPackageManager();
List<ApplicationInfo> appList = pm.getInstalledApplications
(0);

Intent i = new Intent();
i.setAction(appList.get(15).packageName);
i.setClassName(appList.get(15).packageName, appList.get
(15).className);
startActivity(i);

It just crashes and I don't know why.

Brenton

bklik

unread,
Mar 12, 2009, 11:45:34 AM3/12/09
to Android Developers
Update:

OK, I can get my application to launch another application if I
explicitly type in the package and class names. For example:

Intent i = new Intent();
i.setClassName("com.android.calculator2",
"com.android.calculator2.Calculator");
startActivity(i);

Now, how to do find out what the Activity Name is for each package? I
only guessed "Calculator" in the example above after a couple tries.
I also tried:

appList.get(0).getClassName;

But, it returns null.

Brenton

Dianne Hackborn

unread,
Mar 12, 2009, 2:59:08 PM3/12/09
to android-d...@googlegroups.com
The is a home screen sample code in the SDK.  I would suggest using that that to see how to do things.
--
Dianne Hackborn
Android framework engineer
hac...@android.com

Note: please don't send private questions to me, as I don't have time to provide private support.  All such questions should be posted on public forums, where I and others can see and answer them.

bklik

unread,
Mar 13, 2009, 7:13:06 AM3/13/09
to Android Developers
Dianne,

Thank you for pointing me in that direction! I found just what I was
looking for.

For those of you reading this thread, here's the code I used to get it
working:

PackageManager pm = this.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(int i=0; i<appList.size(); i++){
mainText.setText(mainText.getText() + "\n" +
"number: " + i + "\n" +
"Name: " + appList.get(i).loadLabel(pm) + "\n"
);
}
Intent i = new Intent();
i.setAction(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_LAUNCHER);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
i.setComponent(new ComponentName(appList.get
(4).activityInfo.applicationInfo.packageName, appList.get
(4).activityInfo.name));
startActivity(i);

Brenton
> hack...@android.com
Reply all
Reply to author
Forward
0 new messages