android - 找不到处理 Intent { act=android.intent.action.VIEW dat=google.navigation :q=17. 399986,78.483137 pkg=com.google.android.apps.maps } 的 Activity

标签 android google-maps activitynotfoundexception

我正在尝试使用以下代码启动 map 。

public static void navigate(Context context, double lat, double lon) {
        String locationQuery = lat + "," + lon;
        Uri gmmIntentUri = Uri.parse("google.navigation:q=" + locationQuery);
        Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
        mapIntent.setPackage("com.google.android.apps.maps");
        context.startActivity(mapIntent);
    }

但在某些情况下,我找不到任何 Activity 来处理 Intent 崩溃。我在这里做错了什么。

最佳答案

我认为你应该检查这个包是否像this一样安装

private boolean isPackageInstalled(String packagename, PackageManager packageManager) {
    try {
        packageManager.getPackageInfo(packagename, 0);
        return true;
    } catch (NameNotFoundException e) {
        return false;
    }
}

如果不是,则打开网络版本。或者查看 Google map 文档。据我所知, map 可以通过一种方式处理它。

或者您可以通过这种方式检查应用是否可用:

if (mapIntent.resolveActivity(getPackageManager()) != null) {
    ...
}

如果没有安装应用程序,您可以:

1.将用户重定向到 Google Play

2.在浏览器中打开 map 。

String uri = "http://maps.google.com/maps?saddr=" + sourceLatitude + "," + sourceLongitude + "&daddr=" + destinationLatitude + "," + destinationLongitude;
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
startActivity(intent);

关于android - 找不到处理 Intent { act=android.intent.action.VIEW dat=google.navigation :q=17. 399986,78.483137 pkg=com.google.android.apps.maps } 的 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49898542/

相关文章:

android - 无法在textview Android中显示来自服务器的表情符号

java - 如何使用 Picasso 加载 Google map 静态 map ?

javascript - 更改 Google map 的 RichMarker 光标

java - Android:Selector.select() 立即返回 0

android - 超过 EditText 限制时提醒用户

Javascript 作用域错误

android - 无法从其他模块打开 Activity

Android Instagram分享异常

java - 图像按钮没有响应

java - 有没有办法知道应用程序安装了多长时间?