我目前正在测试wear 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模拟器上运行。
答案 0 :(得分:1)
我正在查看documentation上的内容并注意到一个区别。在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);
尝试添加上述代码段的第三行,看看是否启动了正确的应用程序。
答案 1 :(得分:0)
ActivityNotFoundException
或其中一个变体失败因为找不到Activity来执行给定的Intent时,会抛出 startActivity(Intent)
。您可以参考此thread,其中指出在创建Android虚拟设备时,您应选择Google APIs作为目标。如果您没有安装它们,可以使用SDK Manager下载它。