【发布时间】:2013-09-18 20:23:32
【问题描述】:
我正在通过 Intent 启动内置地图应用程序 (7.1.0),但是我发送的请求 URL 似乎都没有工作。
我想知道 url/uri 参数的正确语法是什么。
我以为这是一个静态地图请求,但内置地图应用程序不是静态地图,这可能是它们不起作用的原因。
旧式 v1 请求字符串也不起作用。
从 v2 开始,甚至可以通过 url/uri 意图参数向地图应用发送请求吗?
任何帮助或提示将不胜感激(我只想使用内置的地图应用程序,并且觉得我不应该实现自己的 MapActivity/Fragment,因为我没有做任何花哨的事情,只是一个简单的情节)。
这是触发地图的代码:
//string url = "http://maps.googleapis.com/maps/api/staticmap?geo:50.95144,6.98725?q=50.95144,6.98725%20(Disneyland)&zoom=13&size=600x300&sensor=true";
//string url = "http://maps.googleapis.com/maps/api/staticmap?center=Brooklyn+Bridge,New+York,NY&zoom=13&size=600x300&sensor=true";
string url = "http://maps.googleapis.com/maps/api?center=Brooklyn+Bridge,New+York,NY";
Uri uri = Uri.Parse( url );
Intent intent = new Intent(Android.Content.Intent.ActionView, Uri.Parse(url));
intent.SetClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
StartActivityForResult(intent, 0);
谢谢。
【问题讨论】:
-
字符串 url = "geo:0,0?q=0,0";有效,所以我想我不需要方案和服务器地址,只需要查询参数。
-
建议您摆脱
setClassName()。 -
@CommonsWare 是 setClassName 贬值(可以这么说)?我在这里使用它来提示操作系统应该为哪个应用程序提供服务。 Android 到底如何才能用如此有限的信息推断出正确的应用程序(即 uri 请求“geo:0,0?q=0,0”(没有 tho 也可以工作))??
-
“我在此处用作向操作系统提示应由哪个应用程序处理请求的提示”- 任何使用
setClassName()都是严重的代码异味,应尽可能避免,因为它会使您的应用程序变得脆弱且对用户不利。 “在世界上,Android 怎么能用如此有限的信息推断出正确的应用程序(即 uri 请求“geo:0,0?q=0,0”?”——就像它可以“推断出正确的应用程序”一样)http等方案。developer.android.com/guide/components/intents-filters.html -
@CommonsWare 非常感谢您的洞察力......我没有意识到“geo”是一个计划,但现在我明白了,它的“geo:”不是“geo =”......我想这是一个参数!
标签: android google-maps android-intent google-maps-api-2