简体   繁体   English

Android Studio Webview调用链接仅工作一次

[英]Android Studio webview call link work only once

My activity java is like this. 我的活动java就是这样。 The problem is the html Call link 问题是html呼叫链接

<a href="tel:555-555-5555">

only works once. 只工作一次。 I tried many things but i couldn't get it to work. 我尝试了很多事情,但无法正常工作。 How can i fix that? 我该如何解决?

public class Wall extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    String url = "http://##########.com/#############/";
    setContentView(R.layout.activity_wall);
    WebView webView = (WebView)findViewById(R.id.webView);
    webView.getSettings().setAppCacheMaxSize( 5 * 1024 * 1024 ); // 5MB
    webView.getSettings().setAppCachePath( getApplicationContext().getCacheDir().getAbsolutePath() );
    webView.getSettings().setAllowFileAccess( true );
    webView.getSettings().setAppCacheEnabled( true );
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setCacheMode( WebSettings.LOAD_DEFAULT ); // load online by default
    if ( !isNetworkAvailable() ) { // loading offline
        webView.getSettings().setCacheMode( WebSettings.LOAD_CACHE_ELSE_NETWORK );
    }
    webView.setWebViewClient(new WebViewClient(){
        @Override
        public boolean shouldOverrideUrlLoading(WebView webView, String url) {
            if (url.startsWith("tel:")) {
                Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(url));
                startActivity(intent);
                webView.reload();
                return true;
            }
            if (url.startsWith("sms:")) {
                Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(url));
                startActivity(intent);
                webView.reload();
                return true;
            }
            webView.loadUrl(url);
            return true;
        }
    });
    webView.setWebChromeClient(new WebChromeClient());
    webView.loadUrl("http://zacseed.com/parttime/");



    }



@Override
public void onBackPressed() {

    WebView webView = (WebView) findViewById(R.id.webView);
    webView.setWebViewClient(new WebViewClient());
    if (webView.canGoBack()) {
        webView.goBack();
    } else {
        super.onBackPressed();
    }

}

private boolean isNetworkAvailable() {
    ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService( CONNECTIVITY_SERVICE );
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
    return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}}

And i tried to set up a button to copy a number to clipboard with javascript. 而且我试图设置一个按钮,以使用javascript将数字复制到剪贴板。 But that didn't worked as well. 但是,效果不佳。 In the browser it works fine. 在浏览器中工作正常。 But not in the app 但不在应用程式中

Please Check this Code Snippet 请检查此代码段

 @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
         if (url.indexOf("tel:") > -1) {
            startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse(url)));
            return true;
        } 
    }

Try this: 尝试这个:

private class MyBrowser extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) { 
            if (url.startsWith("tel:") || url.startsWith("sms:") || url.startsWith("smsto:") || url.startsWith("mailto:") || url.startsWith("mms:") || url.startsWith("mmsto:") || url.startsWith("market:")) {
                Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                startActivity(intent);
                return true;
            } else {
                view.loadUrl(url);
                return true;
            }
        }
    }

That should normally open the phone app. 那通常应该打开电话应用程序。 If you have any more questions just ask. 如果您还有其他问题,请提出。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM