无法从Wear 2.0设备启动导航意图

时间:2017-05-19 06:36:29

标签: android google-maps wear-os android-wear-2.0

我目前正在测试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模拟器上运行。

2 个答案:

答案 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下载它。