gpt4 book ai didi

android - 一个软件包可以有多个启动 Intent 吗?

转载 作者:行者123 更新时间:2023-11-29 00:39:35 32 4
gpt4 key购买 nike

我需要知道用户可以启动的已安装应用程序列表(例如:浏览器、电子邮件、 map 等)。我读了this question关于getInstalledApplications方法,所以写了如下代码:

final PackageManager pm = getPackageManager();
List<ApplicationInfo> apps = pm.getInstalledApplications(PackageManager.GET_META_DATA);
for (ApplicationInfo app : apps) {
Intent launchIntent = pm.getLaunchIntentForPackage(app.packageName);
if (launchIntent != null) {
Log.d(LOG_TAG, "getApplicationLabel: " + pm.getApplicationLabel(app));
Log.d(LOG_TAG, "loadLabel: " + app.loadLabel(pm));
Log.d(LOG_TAG, "packageName: " + app.packageName);
Log.d(LOG_TAG, "name: " + app.name);
}
}

这样我就得到了可以启动的应用程序列表。这些应用程序中的每一个都以包名称为特征,因此如果我想启动其中一个应用程序,只需通过指定包名称来获取包的启动 Intent 。这意味着每个包最多有一个可以启动的 Activity ,因此每个应用程序(由 getInstalledApplications 方法返回)都应该有一个唯一的包名称。对吗?

最佳答案

Android 通常不允许您安装多个使用相同包名的应用程序。根据我的经验,第二个应用程序的 .apk 文件不会安装,更不用说运行了。所以,不,您不会为每个包名称获得一个以上的应用程序。

不过,可以通过同一应用程序的 Intent 启动多个 Activity。您的代码不会获取它们,因为 getLaunchIntentForPackage() 仅返回一个 Intent ,但每个 Activity 都可以有自己的 Intent 过滤器。 http://developer.android.com/guide/topics/intents/intents-filters.html 中的“记事本示例”具有三个不同的 Activity ,每个 Activity 都可以从外部启动。

关于android - 一个软件包可以有多个启动 Intent 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10319572/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com