android - 检查是否有默认应用程序的选择器 Intent

标签 android google-maps android-intent waze

由于 WazeGoogle Maps 具有不同的URI 格式,我需要创建两个单独的 Intent 以确保应用能够导航用户到正确的位置。

主要问题:我不想让用户每次都选择导航应用程序。我希望它表现得像这样:如果用户设置了默认导航应用程序 - 无需询问即可使用它。

如何为不同的应用程序提供两个 URI,但仍然具有相同的界面,就像使用 ACTION_VIEW 参数启动 Intent 时一样?

这是我正在使用的代码。目前导航工作正常,但每次都要求用户选择导航应用程序:

if (!StringUtils.isEmpty(address)) {
    String q = address + "&mode=d&navigate=yes&geo=" + address + "&ll=" + address;
    String urlWaze = "https://waze.com/ul?q=" + q;
    Intent wazeIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(urlWaze));

    String urlGoogle = "google.navigation:q=" + q;
    Intent googleMapsIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(urlGoogle));
    googleMapsIntent.setPackage("com.google.android.apps.maps");

    String title = getActivity().getResources().getString(R.string.choose_navigation_app);
    Intent chooserIntent = Intent.createChooser(wazeIntent, title);
    Intent[] arr = new Intent[1];
    arr[0] = googleMapsIntent;
    chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, arr);

    getContext().startActivity(chooserIntent);
} else {
    Toast.makeText(getContext(), getString(R.string.waypoint_not_have_geolocation), Toast.LENGTH_SHORT).show();
}

最佳答案

事实证明,Waze 和 Google map 具有非常不同的 URI,为了解决我在问题中描述的情况,唯一的解决方案是在我的应用程序中创建单独的用户设置。

关于android - 检查是否有默认应用程序的选择器 Intent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51612368/

相关文章:

android - Android如何连接到Drupal服务?

google-maps - 企业中 Google API key 的所有权

java - 我可以在 finish() 上传递额外的 Intent 吗?

Android 硬件电源按钮广播监听器

android - 这是 Activity 启动模式、 list 或 Intent 标志的更好方法

android - 无法为 sqlite 数据库实例化 Activity 组件信息

android - 为什么 iOS 模拟器比 Android 快得多?

java - Android:在包含的布局中找不到最外面的 View

javascript - 使用 Angularjs 将地址数据从数据库加载到谷歌地图中

javascript - 如何更改此 javascript 中的标记图像