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

标签 android android-intent

我需要知道用户可以启动的已安装应用程序的列表(例如:浏览器、电子邮件、 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/

相关文章:

android - 如何通过我的 Android 应用程序与 Pinterest 中的图片共享/固定消息

android - 可选择启动 Activity 并使用来自 Android 服务的通知。仅在存在某个应用程序时启动或通知

android - 从另一个应用程序调用一个应用程序

android-Image View 设置标签

android - 切换选项卡时重置 fragment 后退堆栈

java - OnSurfaceCreated 未绘制后添加到数组的 OpenGL ES2.0 对象

android - 如何强制视频在 youtube 播放器中全屏播放?

java - Android 5.1以下版本如何在前台运行应用程序

android - 我必须写 settesting(true) 来添加 admob 广告吗?

android - 渐变半径占屏幕尺寸的百分比