首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >等深环节

等深环节
EN

Stack Overflow用户
提问于 2017-11-17 19:44:28
回答 1查看 2.1K关注 0票数 4

我正在使用Xamarin Forms (跨平台)开发一个应用程序,我试图从我的应用程序中打开Waze应用程序,通过纬度和经度。

它很好地打开了Waze,但是Waze刚刚打开,它没有试图找到我经过的地址或纬度/经度。

代码语言:javascript
复制
string stringUri = @"waze://ul?ll=" + client.Latitude + ","  + client.Longitude + "&navigate=yes";
Intent intent = new Intent(Intent.ActionView);
intent.AddFlags(ActivityFlags.NewTask);
intent.SetData(Android.Net.Uri.Parse(stringUri));
Android.App.Application.Context.StartActivity(intent);

关于我如何使它工作的一些想法?

--编辑--

最后,它起了作用,使用@SushiHangover的想法,我设法达到了预期的结果。最终代码如下:

代码语言:javascript
复制
public static Task < bool > OpenWazeAndroid(decimal latitude, decimal longitude, string address) {
    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.ResolveActivi‌​ ty(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);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-18 00:43:18

Android上的直接应用程序链接不尊重链接属性/选项(Waze iOS确实如此),所以使用Waze (https://waze.com)正确打开Waze并使用深度链接选项。

示例:

代码语言:javascript
复制
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);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47358194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档