5

次のコードを使用してマップを起動しようとしています。

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);
    }

しかし、場合によっては、インテント クラッシュを処理するアクティビティが見つかりません。ここで私が間違っていること。

4

1 に答える 1

7

このパッケージがこのようにインストールされているかどうかを確認する必要があると思います

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

そうでない場合は、Web バージョンを開きます。または、Google マップのドキュメントをご覧ください。私の知る限り、マップがそれを処理できる方法があります。

または、次の方法でアプリが利用可能かどうかを確認できます。

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

アプリがインストールされていない場合は、次のことができます。

1. ユーザーを Google Play にリダイレクトする

2.ブラウザで地図を開く。

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);
于 2018-04-18T11:36:16.990 に答える