Java 查找Android应用程序的主要活动
我有一个自定义的启动器,有时想添加一个按钮来启动第三方应用程序。要做到这一点,我需要的应用程序包的名称,这是很容易找到,但也应用程序的主要或启动活动。我使用它来创建我传递给我的应用程序的意图 例如,要创建启动Skype的意图,我使用:Java 查找Android应用程序的主要活动,java,android,apk,Java,Android,Apk,我有一个自定义的启动器,有时想添加一个按钮来启动第三方应用程序。要做到这一点,我需要的应用程序包的名称,这是很容易找到,但也应用程序的主要或启动活动。我使用它来创建我传递给我的应用程序的意图 例如,要创建启动Skype的意图,我使用: `new Intent().setComponent(new ComponentName("com.skype.raider", "com.skype.raider.Main")) 我通过谷歌搜索找到了主要活动的名称,由于Skype是一款受欢迎的应用程序,它最终
`new Intent().setComponent(new ComponentName("com.skype.raider", "com.skype.raider.Main"))
我通过谷歌搜索找到了主要活动的名称,由于Skype是一款受欢迎的应用程序,它最终出现了
我知道如果我有APK,我可以打开它看看androidmainifest,但是我不知道如何获得一些应用的APK。例如,我想开始。我可以看到包名,com.dbapp.android.mediahouse
,但是我不确定如何获取主要活动的名称(我尝试了.main)
我已经看过了Chrome的扩展,它应该可以让你从Google Play获得APK,但它似乎不再工作了
我知道从自定义启动器启动第三方应用程序一定很常见,但我在搜索时找不到答案
人们通常如何处理这个问题?你是从谷歌Play商店获得APK的吗?如果是的话,你是如何做到的?同样,我知道我可以通过阅读清单来获取活动,但在很多情况下我不知道如何获取APK本身。如果您有任何建议,我们将不胜感激,谢谢 您可以使用
Intent-Intent=newintent(android.content.Intent.MAIN)代码>
或者像后面的示例一样启动映射并解析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);
您可以使用Intent-Intent=newintent(android.content.Intent.MAIN)代码>
或者像后面的示例一样启动映射并解析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);
启动器应通过使用PackageManager
和QueryInputActivities()
查找设备上应用程序发布的MAIN
/启动器
活动。它实现了这样一个启动器
PackageManager pm=getPackageManager();
Intent main=new Intent(Intent.ACTION_MAIN, null);
main.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> launchables=pm.queryIntentActivities(main, 0);
PackageManager pm=getPackageManager();
Intent main=新的Intent(Intent.ACTION_main,空);
main.addCategory(Intent.CATEGORY_启动器);
List launchables=pm.querytentActivities(main,0);
然后,您可以使用该列表
在列表视图
、网格视图
等中显示可用的活动。启动器应该通过使用PackageManager
和QueryInputActivities()
来查找设备上应用程序发布的主
/启动器
活动。它实现了这样一个启动器
PackageManager pm=getPackageManager();
Intent main=new Intent(Intent.ACTION_MAIN, null);
main.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> launchables=pm.queryIntentActivities(main, 0);
PackageManager pm=getPackageManager();
Intent main=新的Intent(Intent.ACTION_main,空);
main.addCategory(Intent.CATEGORY_启动器);
List launchables=pm.querytentActivities(main,0);
然后,您可以使用该列表
在列表视图
、网格视图
等中显示可用的活动。打包管理器
提供了一种方法来准确获取您想要的内容:
PackageManager.getLaunchIntentForPackage(String packageName)
PackageManager
提供了一种方法,可以准确地获得您想要的:
PackageManager.getLaunchIntentForPackage(String packageName)
使用action main和category launcher查找用于启动app@njzk2谢谢你的回复。很抱歉,我不知道你的意思,你能详细说明一下吗?使用action main和category launcher来查找用于启动app@njzk2谢谢你的回复。对不起,我不知道你的意思,你能详细解释一下吗?嗨。抱歉,我不确定这与实际查找APK和获取APK活动有何关系。嗨。抱歉,我不确定这与实际查找APK和获取APK的活动有什么关系。不过有一点需要注意:如果存在类别信息,这将返回类别信息的意图,而不是类别启动器的意图。有一点需要注意,尽管如此:如果存在,这将返回CATEGORY\u INFO的意图,而不是CATEGORY\u启动器的意图。