I'm developing an App using Xamarin Forms (cross platform), and im trying to open Waze app from my app, passing latitude and longitude.
It opens Waze very well, but Waze just open, it didn't try to find the address or the latitude/longitude that I passed.
Some Ideas on how I make it work?
---EDIT---
Finally, it WORKED, using the idea from @SushiHangover, i managed to achieve the desired result. The final code is here:
public static Task<bool> OpenWazeAndroid(decimal latitude, decimal longitude, string address)
{
if (IsAndroid())
{
try
{
var lat = latitude.ToString().Replace(",",".");
var longi = longitude.ToString().Replace(",", ".");
const string wazePrefix = "waze://";
Android.Content.Intent intent = new Android.Content.Intent(Android.Content.Intent.ActionView, Android.Net.Uri.Parse(wazePrefix));
string wazeURL = ("https://waze.com/ul?q=" + address + "&ll=" + lat + "," + longi + "&z=8&navigate=yes");
wazeURL = wazeURL.Replace(" ", "%20");
var resolveInfo = Android.App.Application.Context.PackageManager.ResolveActivity(intent, 0);
Android.Net.Uri wazeUri;
if (resolveInfo != null)
{
wazeUri = Android.Net.Uri.Parse(wazeURL);
}
else
{
wazeUri = Android.Net.Uri.Parse("market://details?id=com.waze");
}
intent.AddFlags(Android.Content.ActivityFlags.NewTask);
intent.SetData(wazeUri);
Android.App.Application.Context.StartActivity(intent);
return Task.FromResult(true);
}
catch (Exception ex)
{
App.Shell.Alert("Erro ao abrir o Waze.\n" + ex.Message);
return Task.FromResult(false);
}
}
return Task.FromResult(false);
}
The direct app link on Android does not respect the link properties/options (Waze iOS does), so use the web base url (https://waze.com
) to properly open Waze with the deep link options.
Example:
const string wazeAppURL = "waze://";
var wazeURL = $"https://waze.com/ul?ll={loc[0]},{loc[1]}&navigate=yes";
var intent = new Intent(Intent.ActionView, Android.Net.Uri.Parse(wazeAppURL));
var resolveInfo = PackageManager.ResolveActivity(intent, 0);
var wazeUri = resolveInfo != null ? Android.Net.Uri.Parse(wazeURL) : Android.Net.Uri.Parse("market://details?id=com.waze");
intent.SetData(wazeUri);
StartActivity(intent);
来源:https://stackoverflow.com/questions/47358194/waze-deep-links