为Intent构建Geo uri时,“。path()”不起作用

时间:2019-08-02 17:37:56

标签: android android-intent

我对地图的意图有疑问,我发现.path()在构建geo uri时不起作用,它只是打开了Google地图,什么也不做。请参见下面的代码:

public void onClickOpenAddressButton(View v) {
    String address = "200 w 40th st, new york, ny 10018";

    Uri.Builder uriBuilder = new Uri.Builder();

    uriBuilder.scheme("geo");
    uriBuilder.path("440.749841, -73.986675");
    //uriBuilder.appendQueryParameter("q", address);

    showMap(uriBuilder.build());
}

private void showMap(Uri uri) {
    Intent intent = new Intent(Intent.ACTION_VIEW);

    intent.setData(uri);

    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    } else {
        Toast.makeText(this, "Can't find any Application to handle this Intent", Toast.LENGTH_SHORT).show();
    }
}

但是,如果我将String串联与Uri.parse()方法一起使用,它将起作用:

intent.setData(Uri.parse("geo:" + geoLocation));

因此,如果我使用uri builder方法并且也有确切的地址,我仍然需要.path()来构建有效的geo uri吗?如果是这样,.path()的目的是什么?谢谢您的帮助。

1 个答案:

答案 0 :(得分:1)

  

我仍然需要“ .path()”来构建有效的地理uri吗?

否。

  

如果是,“。path()”的目的是什么?

还有其他类型的Uri方案。例如,httpsUri方案,而这是使用该方案的Uri

https://stackoverflow.com/questions/57331195/path-doesnt-work-when-building-geo-uri-for-intent

path()的{​​{1}}是Uri

并非所有/questions/57331195/path-doesnt-work-when-building-geo-uri-for-intent值都使用Uri的所有可能的功能,因此您通过Uri构建的Uri不会使用所有可能的Uri.Builder方法。