选择器意图,用于检查是否存在默认应用

时间:2018-07-31 11:31:30

标签: android google-maps android-intent waze

由于WazeGoogle Maps具有不同的URI formats,因此我需要创建两个单独的意图,以确保应用程序会将用户导航到正确的位置。

主要问题:我不想让用户每次都选择导航应用程序。我希望它的行为如下:如果用户设置了默认的导航应用程序-无需询问即可使用它。

如何为单独的应用程序使用两个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();
}

1 个答案:

答案 0 :(得分:0)

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