0

我有一个自定义启动器,有时想添加一个按钮来启动第三方应用程序。为此,我需要很容易找到的应用程序包名称,还需要应用程序主或启动活动。我用它来创建传递给我的应用程序的意图。

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

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

我能够通过谷歌搜索找到主要活动的名称,并且由于 Skype 是一个受欢迎的应用程序,它最终出现了。

我知道如果我有 APK,我可以打开它并查看 androidmainifest ,但是我完全不确定如何获取某些应用程序的 APK。例如,我想从 Google Play 启动这个应用程序。我可以看到包名称,com.dbapp.android.mediahouse但是我不确定如何获取主要活动的名称(我尝试过 .MAIN)。

我查看了 Chrome 扩展apk 下载器,该下载器据称允许您从 Google Play 获取 APK,但它似乎不再起作用。

我知道从自定义启动器启动第三方应用程序一定很常见,但我在搜索时找不到答案。

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

4

3 回答 3

3

启动器应该通过使用和来查找设备上应用程序所宣传的MAIN/活动。这是一个实现此类启动器的示例应用程序。LAUNCHERPackageManagerqueryIntentActivities()

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

main.addCategory(Intent.CATEGORY_LAUNCHER);

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

然后,您可以使用它在 a 、等List<ResolveInfo>中显示可用的活动。ListViewGridView

于 2013-01-02T15:59:47.937 回答
1

PackageManager提供了一种获得您想要的东西的方法:

PackageManager.getLaunchIntentForPackage(String packageName)
于 2013-01-02T16:33:45.760 回答
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);
于 2013-01-02T15:57:55.060 回答