java - HTTP ://a href link not working in Android

标签 java android android-intent

我在我的 Android 应用程序中使用 WebView 。

我有 3 个按钮,1 个用于链接网站,1 个用于调用号码,1 个用于发送电子邮件。

起初调用我的网站按钮有效,http://www.somelink.com .

但是我的电话:链接不起作用。所以我集成了一些代码,使我的 tel: 按钮起作用。

问题是它使我的网站或 http: 按钮不起作用?

当您单击 html 按钮时,它什么也不做。

package de.sonae.novolam;

import android.annotation.SuppressLint;
import android.app.Fragment;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebView;
import android.webkit.WebViewClient;


@SuppressLint("SetJavaScriptEnabled")
public class DFragment extends Fragment {

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View mainView = (View) inflater.inflate(R.layout.dfragment, container, false);
WebView webView = (WebView) mainView.findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);

webView.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView wv, String url) {
    if (url.startsWith("tel:")) { 
            Intent intent = new Intent(Intent.ACTION_DIAL,
                    Uri.parse(url)); 
            startActivity(intent); 
    }

    return true;
}
    });
webView.loadUrl("file:///android_asset/contact.html");
return mainView;
}

public boolean shouldOverrideUrlLoading(WebView webView, String url) {
    if( url.startsWith("http:") || url.startsWith("https:") ) {
        webView.loadUrl(url);
         Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
         startActivity( intent ); 
    }

    else if (url.startsWith("mailto:")) { 

    }

    // Otherwise allow the OS to handle it
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
    startActivity( intent ); 
    return true;
}
}

最佳答案

您的代码中有两个 shouldOverrideUrlLoading 方法。唯一的第一个实际上是由 WebView 调用的。将代码从第二个 shouldOverrideUrlLoading 移到第一个,它将起作用。

webView.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView wv, String url) {
        if (url.startsWith("tel:")) { 
            Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(url)); 
            startActivity(intent);
            return true;
        } else if( url.startsWith("http:") || url.startsWith("https:") ) {
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
            startActivity(intent); 
            return true;
        } else if (url.startsWith("mailto:")) { 
            // TODO : handle mail url
            return true;
        }

        return false;
    }   
});

关于java - HTTP ://a href link not working in Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15207717/

相关文章:

java - sqlite - 如何在Where子句中使用变量?

android - textIsSelectable 不适用于 descendantFocusability=blocksDescendants

android - 设置最小和最大缩放级别

java - 如何从 DH key 获取 AES key

Java OutOfMemoryException 无法创建新的 native 线程

android - 如何结束我的拨出电话。

java - 是否可以使用 createChooser 但尚未实际启动 Intent ?

java - 从 getActionProvider() 设置 ShareActionProvider 时如何解决 Null 问题?

java - 使用okhttp3时空HTTP获取响应体

android - 如何使我的 JAR 库包含在 AndroidManifest.xml 的 <uses-library> 中并将其用作共享库