查找Android应用程序的主要活动

时间:2013-01-02 15:23:13

标签: java android apk

我有一个自定义启动器,有时想添加一个按钮来启动第三方应用程序。要做到这一点,我需要易于查找的应用程序包名称,还需要应用程序主要或启动活动。我用它来创建我传递给我的应用程序的Intents。

例如,要创建启动Skype的意图,请使用:

`new Intent().setComponent(new ComponentName("com.skype.raider", "com.skype.raider.Main"))

我能够通过Google搜索找到主要活动的名称,因为Skype是最终出现的热门应用程序。

我知道如果我有APK,我可以打开它并查看androidmainifest,但是我不知道如何获得某些应用程序的APK。例如,我想开始this app from Google Play。我可以看到包名com.dbapp.android.mediahouse,但是我不知道如何获取主要活动的名称(我试过.MAIN)。

我查看了Chrome扩展程序apk downloader,它允许您从Google Play获取APK,但它似乎不再有效。

我知道从自定义启动器启动第三方应用程序是必须相当普遍的,但我在搜索时找不到答案。

人们通常如何处理这个问题?您是否从Google Play商店获得了APK,如果是这样,那么如何做到这一点?同样,我知道我可以通过阅读清单来获取活动,但我不知道如何在许多情况下获得APK本身。非常感谢任何建议,谢谢!

3 个答案:

答案 0 :(得分:3)

启动者应该使用MAINLAUNCHER找到设备上应用宣传的PackageManager / queryIntentActivities()个活动。 Here is a sample app实现了这样一个发射器。

PackageManager pm=getPackageManager();
Intent main=new Intent(Intent.ACTION_MAIN, null);

main.addCategory(Intent.CATEGORY_LAUNCHER);

List<ResolveInfo> launchables=pm.queryIntentActivities(main, 0);

然后,您使用List<ResolveInfo>来显示ListViewGridView等中的可用活动。

答案 1 :(得分:1)

PackageManager提供了一种方法来准确获取您想要的内容:

PackageManager.getLaunchIntentForPackage(String packageName)

答案 2 :(得分:0)

您可以使用Intent intent = new Intent(android.content.Intent.MAIN);

或者像启动Maps并解析URI背后的示例:

String uri = "http://maps.google.com/maps?saddr=" + Utils.getLatitude(ShowDetails.this)+","+Utils.getLongitude(ShowDetails.this)+"&daddr="+userLatitude+","+userLongitude;
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(uri));
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
startActivity(intent);