我目前正在测试磨损 2.0 功能,并决定通过新的地图实现。
我试图从标记的信息窗口单击启动一个非常基本的导航意图,但该应用程序不断崩溃,并出现意想不到的奇怪错误。
我的代码:
@Override
public void onMapReady(GoogleMap googleMap) {
// Map is ready to be used.
mMap = googleMap;
// Set the long click listener as a way to exit the map.
mMap.setOnMapLongClickListener(this);
mMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
Uri gmmIntentUri = Uri.parse("google.navigation:q=" + marker.getPosition().latitude+","+marker.getPosition().longitude);
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
startActivity(mapIntent);
}
});
// Add a marker in Sydney, Australia and move the camera.
LatLng sydney = new LatLng(-34, 151);
mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
}
我不断得到的错误:
android.content.ActivityNotFoundException: 未找到处理 Intent { act=android.intent.action.VIEW dat=google.navigation:q=-34.0,151.0 }
我做错了什么吗? 在 Wear 2.0 Android O 模拟器上运行。
我正在浏览有关此的文档,并注意到一个区别。在Google API文档中,他们有一行明确设置了要启动的应用程序的软件包。你的代码没有:
Uri gmmIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
尝试添加上述代码片段中的第三行,看看是否启动了正确的应用程序。
当对startActivity(Intent)
或其变体之一的调用失败时,会抛出ActivityNotFoundException
,因为找不到执行给定意图的活动。您可以参考此线程,该线程指出,在创建Android虚拟设备时,应选择Google API作为目标。如果您没有安装它们,则可以使用 SDK 管理器下载它。
Wear 2.0地图系统本身不包括导航,这就是它崩溃的原因。显然,它正在即将推出的Watch OS中添加。