2017-09-25 72 views
1

我的活動Java是這樣的。問題是HTML通話鏈接Android Studio的webview調用鏈接只能工作一次

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

只能工作一次。我嘗試了很多東西,但是我無法完成它的工作。我該如何解決這個問題?

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(); 
}} 

而我試圖設置一個按鈕來將數字複製到剪貼板與JavaScript。但那並沒有奏效。在瀏覽器中,它工作正常。但不是在應用

回答

0

試試這個:

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; 
      } 
     } 
    } 

通常應該打開手機應用程序。如果您還有其他問題,請詢問。

+0

謝謝史蒂芬。我弄明白了。非常感謝 –

+0

請接受然後作爲回答。所以它可以幫助其他人 – Steven

0

請檢查該代碼段

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

問題仍然存在。 –

+0

webView.setWebViewClient(新WebViewClient(){ @覆蓋 公共布爾shouldOverrideUrlLoading(web視圖網頁視圖,字符串URL){ 如果(url.indexOf( 「電話:」)> -1){ startActivity(新意圖(意向書.ACTION_DIAL,Uri.parse(url))); } return true; } }); –