Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在应用程序中获取主活动名称?_Android_Android Activity - Fatal编程技术网

Android 如何在应用程序中获取主活动名称?

Android 如何在应用程序中获取主活动名称?,android,android-activity,Android,Android Activity,如何获取系统第三方应用程序中的主要活动 PackageManager pm= getPackageManager(); List<PackageInfo> packs = pm.getInstalledPackages(0); for (PackageInfo pi : packs) { HashMap<String, Object> map = new HashMap<String, Object>(); map.put("icon", pi.applic

如何获取系统第三方应用程序中的主要活动

PackageManager  pm= getPackageManager();
List<PackageInfo> packs = pm.getInstalledPackages(0);
for (PackageInfo pi : packs) {
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("icon", pi.applicationInfo.loadIcon(pm));
map.put("appName", pi.applicationInfo.loadLabel(pm));
map.put("packageName", pi.packageName);
}
PackageManager pm=getPackageManager();
列表包=pm.getInstalledPackages(0);
用于(PackageInfo pi:packs){
HashMap=newHashMap();
map.put(“icon”,pi.applicationInfo.loadIcon(pm));
map.put(“appName”,pi.applicationInfo.loadLabel(pm));
map.put(“packageName”,pi.packageName);
}
我知道如何获取包名。但不知道如何获取主要活动的名称

我使用pi.activities[0].name。它仍然获取空指针


任何人的想法都很受欢迎。

您可以使用以下方法

final PackageManager pm = getApplicationContext().getPackageManager();
ApplicationInfo ai;
try {
    ai = pm.getApplicationInfo( this.getPackageName(), 0);
 } catch (final NameNotFoundException e) {
 ai = null;
}
final String applicationName = (String) (ai != null ? pm.getApplicationLabel(ai) : "unknown)");
使用

这将为您提供启动意图,如果您打印它,您将看到启动意图以及主要活动


如果您只想显示可以从设备启动器启动的活动,那么您需要为类别启动器

设置一个过滤器。您的应用程序名称不是存储在strings.xml中吗?这也在清单中使用。@StephanCelis OP询问如何在第三方应用程序中获取主要活动的名称,而不是他自己的应用程序(即:没有源代码)。@David Wasser,说得好!错过了这个细节,Op询问如何在第三方应用程序中获取主要活动的名称,而不是他自己的应用程序。此代码仅适用于您自己的应用程序。@DavidWasser抱歉,我已更改了答案。OP要求输入的是主要活动的名称,而不是应用程序的名称。你的答案还是错的。
pm.getLaunchIntentForPackage(pi.packageName);