Geo Intent Label not showing in Google Maps App

一曲冷凌霜 提交于 2020-06-09 11:46:50

问题


Since my Google Maps app updated recently, now version 10.11.1, the following code does not show the label as expected, documented, and previously working:

  val intent = Intent(Intent.ACTION_VIEW, Uri.parse("geo:38.8951,100.0364?q=38.8951,100.0364(foo)")).setPackage("com.google.android.apps.maps")
  if (intent.resolveActivity(packageManager) == null) {
    intent.setPackage(null)
  }
  startActivity(intent)

And neither does this version (with 0,0 immediately after geo:):

  val intent = Intent(Intent.ACTION_VIEW, Uri.parse("geo:0,0?q=38.8951,100.0364(foo)")).setPackage("com.google.android.apps.maps")
  if (intent.resolveActivity(packageManager) == null) {
    intent.setPackage(null)
  }
  startActivity(intent)

Neither does the example code in the official documentation show a label:

// Display a label at the location of Google's Sydney office
Uri gmmIntentUri = Uri.parse("geo:0,0?q=-33.8666,151.1957(Google+Sydney)");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

no "Google Sydney" label on Moto G5


回答1:


No solution still even with latest map update 10.12.1 the label still does not show even if the documentation still says it should I've created an issue on Google's Issue tracker: https://issuetracker.google.com/issues/129726279

hopefully we'll have some information shortly.




回答2:


I think we are going about it the wrong way here. If I was Google, I would also feel insecure about allowing developers to post directions with an abstract destination label, I am sure they never plan to fix this.

I recommend the following solution according to Google's new standards. https://developers.google.com/maps/documentation/urls/android-intents:

https://www.google.com/maps/dir/?api=1&destination=LATITUDE,LONGITUDE

If you look at most apps these days, including the ones I have built, this allows us to post a LAT/LONG for the user to go to with Google's own Address values built in as the destination label.

To actually launch the Google Maps application, simply launch a web intent, I use the application context in this case.

    fun startGoogleMaps(context: Context, lat: Double, long: Double) {
        startWebBrowser(
            context,
            Uri.parse("https://www.google.com/maps/dir/?api=1&destination=$lat,$long")
        )
    }

    fun startWebBrowser(context: Context, link: Uri?) {
        if (link != null) {
            val webIntent = Intent(Intent.ACTION_VIEW, link).apply {
                addFlags(FLAG_ACTIVITY_NEW_TASK)
            }
            if (webIntent.resolveActivity(context.packageManager) != null) {
                context.startActivity(webIntent)
            }
        }
    }


来源:https://stackoverflow.com/questions/55078219/geo-intent-label-not-showing-in-google-maps-app

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!