如何创建Map,如果用户的设备上没有安装Map应用程序,它应该在浏览器中打开Map?

polhcujo  于 2021-06-27  发布在  Java
关注(0)|答案(1)|浏览(416)

我正在创建一个应用程序,用户可以点击给定的地址(在 TextView 表单)并将用户带到谷歌Map应用程序中的确切位置。我使用此代码来实现这一点:

// Creates button view which is connected to a view in the XML layout, which gets triggered on touching the view.
        Button btnLoc = findViewById(R.id.location);
        btnLoc.setOnClickListener(new View.OnClickListener()

        {
            @Override
            public void onClick(View v) {

                // Creates an Intent that will load the location of Mycoffee cafe in map app.
                Uri gmmIntentUri = Uri.parse("geo:00.0000,00.0000");
                Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
                mapIntent.setPackage("com.google.android.apps.maps");
                startActivity(mapIntent);

            }

        });

这里的问题是,如果用户的设备中没有安装googleMap应用程序,那么该应用程序在点击浏览器时就会崩溃 location 查看。因此,在这种情况下,不是应用程序崩溃,我想做的是要么应用程序应该打开任何浏览器并加载那里的位置(在谷歌Map网站),或者它应该显示一个toast消息,要求用户安装谷歌Map应用程序。我怎样才能做到这一点?
如果可能的话,请分享解决方案。

mpgws1up

mpgws1up1#

你要做的是检查packagemanager是否真的安装了所需的应用程序,如果安装了-用你给它的值升级googleMap应用程序。如果没有,请将用户重定向到play store进行安装。

private boolean isAppInstalledOrNot(String uri) {
    PackageManager pm = getPackageManager();
    boolean app_installed = false;
    try {
        pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
        app_installed = true;
    } catch (PackageManager.NameNotFoundException e) {
        Log.w("TAG","Exception :"+e.getMessage());
    }
    return app_installed;
}

随信寄去

Uri uri = Uri.parse("com.google.android.apps.maps");

所以

boolean isAppInstalled = isAppInstalledOrNot(uri);

然后

if(isAppInstalled){
// send the lat and long and promote the Google Maps app
}else{ 
        Uri uri = Uri.parse("market://details?id=com.google.android.apps.maps");
        Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri);
        Toast.makeText(this, "Google Maps not Installed",
                Toast.LENGTH_SHORT).show();
        startActivity(goToMarket);
}

如果您想在浏览器或任何其他可以处理的应用程序中打开它

Intent openNav= new Intent(Intent.ACTION_VIEW, Uri
    .parse("http://maps.google.com/maps?saddr="
            + Constants.latitude + ","
            + Constants.longitude + "&daddr="
            + latitude + "," + longitude));
      startActivity(openNav);

注意这里的经纬度也要更换。

相关问题