谷歌Map链接未从android应用程序上的webview打开

hjzp0vay  于 2021-07-11  发布在  Java
关注(0)|答案(1)|浏览(377)

我在我的应用程序中加载了一个webview,其中显示了一些按钮,每个按钮都会启动一条使用googleMap生成的路线。
问题是,当我点击“在应用程序中导航”时,什么都没有发生。
我正在吃晚饭 URL_UNKOWN_SCHEME 错误,但通过添加和 @override 我的代码如下所示:

package com.example.listarehtgps2;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Window;
import android.webkit.WebResourceRequest;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends AppCompatActivity {

    WebView web;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        web = findViewById(R.id.webview);

        WebSettings webSettings = web.getSettings();
        webSettings.setJavaScriptEnabled(true);

        web.loadUrl("webViewURL replaced for privacy reasons");

        web.setWebViewClient(new WebViewClient() {
                 @Override
                 public boolean shouldOverrideUrlLoading(WebView view, String url) {
                     // When user clicks a hyperlink, load in the existing WebView
                     if(url.contains("intent:")) {
                         Uri gmmIntentUri = Uri.parse(url);
                         Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
                         startActivity(mapIntent);
                         return true;
                     }
                     view.loadUrl(url);
                     return true;
                 }
             }
            );

        }
    }

我找不到任何解决方法来打开中的链接 google maps 应用程序。我设法解决了未知的url\u方案,但这是令人沮丧的。
提前谢谢!

tcbh2hod

tcbh2hod1#

url\u unknown\u方案是因为它无法识别uri的方案部分(最高位:),您的uri只是以“intent:”开头吗?
要在某个位置打开Map,请尝试切换到地理方案,这样uri类似于“geo:0.01,0.01?q=london”(连同ofc一起更改您的url.contains检查以查找该地址)。如果您希望google maps优先于用户可能安装的任何其他Map应用程序,也可以在调用startactivity(mapinent)之前插入mapinent.setpackage(“com.google.android.apps.maps”)。
如果您想要导航,请使用以google.navigation开头的uri,例如“google.n”avigation:london或“google.n”avigation:0.01,0.01“,对于街景,您可以使用以google.streetview开头的uri

相关问题