相机和画廊有相同的包名



我正在开发一个Launcher应用程序。我注意到相机和画廊有相同的包名,谷歌+和照片也有相同的包名。当我尝试启动相机/图库时,它打开图库,当我尝试启动照片/Google+时,我打开Google+。

我使用这个代码来获取应用程序列表。

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

关于Camera,我知道我可以使用Intent来启动Camera,当应用程序名称是Camera,包名称是gallery,但可能有很多应用程序使用相同的东西。是否有一个通用的解决方案适用于所有的应用程序?

注::这就是我如何获得应用程序信息

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

虽然他们有相同的包名,但他们有不同的名称,尝试这个来启动你的活动,使用下面的代码来启动活动

 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();
    }

最新更新