Camera 和 Gallery 包名相同

Camera and Gallery has same package name

我正在开发启动器应用程序。我注意到 camera 和 gallery 有相同的包名, Google+ 和 Photos 也有相同的包名。当我尝试启动 camera/gallery 时,它会打开图库,而当我尝试启动 Photos/Google+ 时,我会打开 Google+。

我正在使用此代码获取应用程序列表。

Intent i = new Intent(Intent.ACTION_MAIN, null);
i.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> availableActivities = manager.queryIntentActivities(i, 0);

至于相机,我知道当应用名称为相机且包名称为图库名称时,我可以使用 Intent 启动相机,但可能有很多应用具有相同的功能。是否有适用于所有应用程序的通用解决方案?

P.S.: 这就是我获取应用信息的方式

for(ResolveInfo ri : availableActivities) {
    AppItem app = new AppItem();
    app.setLabel(ri.loadLabel(manager));
    app.setName(ri.activityInfo.packageName);
    quick_apps.add(app);
}

虽然他们有相同的包名,但他们有不同的名字,试试这个开始你activity,使用下面的代码开始activity

 Intent localIntent = new Intent();
    localIntent.setComponent(new ComponentName(
            localResolveInfo.activityInfo.packageName,
            localResolveInfo.activityInfo.name));
    localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    try
    {
        startActivity(localIntent);
    } catch (ActivityNotFoundException localActivityNotFoundException)
    {
        Toast.makeText(mContext, "Package not found!", 0).show();
    }