【问题标题】:How To Link To An Android App From Android Webview如何从 Android Webview 链接到 Android 应用程序
【发布时间】:2011-12-26 14:26:50
【问题描述】:

目前我有一个 Android 应用程序,它基本上是一个加载网页的网页视图。在网页上,我尝试像这样链接到市场......

https://market.android.com/details?id=com.google.earth

http://market.android.com/details?id=com.google.earth

market://details?id=com.google.earth

第一个结果只是打开了一个白屏(它可能正在加载,但已经超过一分钟了)。

第二个结果表明该页面已被移动并且是一个链接。如果您单击链接,它会执行第一个链接。

第三个结果表明页面可能暂时关闭。 (它将链接视为在线链接,而不是手机本身)

这是链接的外观...

echo "<a href='https://market.android.com/details?id=com.google.earth' data-role='button'>Upgrade Now</a>";

请记住,我正在加载的网页使用的是 JQuery Mobile,并且我正在使用 php 回显链接。

如何在网页的 web 视图中打开指向 Android 电子市场的链接?

【问题讨论】:

标签: android android-webview google-play


【解决方案1】:

就我而言,我遇到了相同的空白/暂时移动的问题。我想使用 shouldOverrideUrlLoading 以便在从我的页面到谷歌并返回到我的页面的 oauth2 流中不使用本机浏览器。我的 android 应用程序正在使用自签名证书与 localhost/tomcat 交谈。原来由于证书不匹配,我需要调用继续:

webView.setWebViewClient(new WebViewClient(){
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        Log.i("DevAgentSocialMain", "URL: " + url);
        view.loadUrl(url);
        return true;
    }

    @Override
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
        Log.i("DevAgentSocialMain", "onReceivedError: " + errorCode + " " + description + " url: " + failingUrl);
        super.onReceivedError(view, errorCode, description, failingUrl);
    }

    @Override
    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
        Log.i("DevAgentSocialMain", "onReceivedSslError: " + error.getPrimaryError());
        //super.onReceivedSslError(view, handler, error);
        handler.proceed();
    }
});

【讨论】:

    【解决方案2】:

    当用户点击网页视图中的链接时,您可以使用回调。

    Handling Page Navigationandroid 开发者平台上的部分。

    WebView myWebView = (WebView) findViewById(R.id.webview);
    myWebView.setWebViewClient(MyWebViewClient);
    

    然后你的回调

    private class MyWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (Uri.parse(url).getHost().equals("www.example.com")) {
                // This is my web site, so do not override; let my WebView load the page
                return false;
            }
            // Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
            startActivity(intent);
            return true;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-17
      • 1970-01-01
      • 2011-03-15
      • 1970-01-01
      • 1970-01-01
      • 2014-10-29
      • 2019-01-15
      • 2023-03-31
      相关资源
      最近更新 更多