由于Waze
和Google Maps
不同URI formats
,我需要创建两个单独的意图,以确保应用程序将用户导航到正确的位置。
主要问题:我不想让用户每次都选择导航应用。我希望它表现得像这样:如果用户设置了默认导航应用程序 - 无需询问即可使用它。
如何为单独的应用程序提供两个 URI,但仍然具有相同的界面,就像使用ACTION_VIEW
参数启动意图时一样?
这是我正在使用的代码。目前导航工作正常,但每次都要求用户选择导航应用程序:
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();
}