使用位智导航和使用 Intent.createChooser 的 Google 地图会显示两次位智图标

Navigation with Waze and Google Maps using Intent.createChooser shows Waze icon twice

我在找到答案后提出了这个问题,我不确定礼节,但它 seems to be OK(另外,我现在看到有一个 built-in 选项)。

问题如标题所述,我们使用类似于以下的代码创建了一个意图选择器:

String url = "waze://?ll=" + latitude + ", " + longitude + "&navigate=yes";
Intent intentWaze = new Intent(Intent.ACTION_VIEW, Uri.parse(url));

String uriGoogle = "google.navigation:q=" + latitude + "," + longitude;
Intent intentGoogleNav = new Intent(Intent.ACTION_VIEW, Uri.parse(uriGoogle));

String title = context.getString(R.string.title);
Intent chooserIntent = Intent.createChooser(intentGoogleNav, title);
Intent[] arr = new Intent[1];
arr[0] = intentWaze;
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, arr);
context.startActivity(chooserIntent);

并获得了两个 Waze 图标和一个 Google 地图图标;更糟糕的是,其中一个 Waze 图标没有启动导航(只能打开应用程序)。

我们无法 use the geo: 意图,因为我们需要控制显示的意图(我们不想一直显示两个意图)和 Google 地图中的导航类型(例如: &mode=w).

一段时间后,我使用了解决方案found here,但只有一个图标可以正常工作。正如我在问题中所写,我无法使用这个解决方案,因为它缺乏我需要的灵活性,所以在查看代码后我发现缺少的是:

intentWaze.setPackage("com.waze");
// and more importantly, this:
intentGoogleNav.setPackage("com.google.android.apps.maps");

Waze 似乎正在监听 Google 地图意图(但不能很好地配合它),这就是为什么有两个图标的原因。