2012-03-06 2 views
1
package com.example.t2noob; 


import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.net.ConnectivityManager; 
import android.net.NetworkInfo; 
import android.net.Uri; 
import android.os.Bundle; 
import android.view.KeyEvent; 
import android.view.View; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
import android.widget.Button; 
import android.widget.Toast; 

public class Activity extends Activity 
{ 
public boolean shouldOverrideUrlLoading(WebView view, String url) { 
    if (url.startsWith("tel:")) { 
      Intent intent = new Intent(Intent.ACTION_DIAL, 
        Uri.parse(url)); 
      startActivity(intent); 
    }else if(url.startsWith("http:") || url.startsWith("https:")) { 
     view.loadUrl(url); 
    } 
    return true; 
    } 



    WebView mWebView; 




    public void onCreate(Bundle paramBundle) 
    { 



     super.onCreate(paramBundle); 
     requestWindowFeature(1); 
     getWindow().setFlags(1024, 1024); 
     setContentView(2130903040); 
     final Button button = (Button) findViewById(R.id.Home);//BUTTONS ON TOP OF WEBVIEW. HOME 
     button.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
      mWebView.loadUrl("test.com"); 
      } 
     }); 
     final Button button1 = (Button) findViewById(R.id.Back);//BUTTONS ON TOP OF WEBVIEW. BACK 
     button1.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
      mWebView.goBack(); 
      } 
      }); 

     this.mWebView = ((WebView)findViewById(2131034112)); 
     this.mWebView.getSettings().setJavaScriptEnabled(true); 
     this.mWebView.setWebViewClient(new WebViewClient()); 
     this.mWebView.getSettings().setJavaScriptEnabled(true); 
     this.mWebView.setVerticalScrollBarEnabled(true); 
     this.mWebView.setHorizontalScrollBarEnabled(true); 
     this.mWebView.loadUrl("test.com"); 
     this.mWebView.getSettings().setLoadWithOverviewMode(true); 

     } 


     public boolean onKeyDown(int paramInt, KeyEvent paramKeyEvent)//LETS USER PUSH BACK BUTTON ON PHONE TO GO BACK A PAGE IN WEBVIEW. 
     { 
     boolean bool; 
     if ((paramInt != 4) || (!this.mWebView.canGoBack())) 
     { 
    bool = super.onKeyDown(paramInt, paramKeyEvent); 
} 
else 
{ 
    this.mWebView.goBack(); 
    bool = true; 
} 
return bool; 
} 

} 

그래서 난 함수 shoudOverrideUrlLoading 내가 오픈을 오해하지 않은 경우 모두 웹 링크가 웹보기에서 열을 잡을해야 위의 소스 코드를 안드로이드 다이얼러로 전화 번호. 위 코드로 을 열면 webview에서 열 수있는 링크를 얻을 수 있지만 다이얼러에서 숫자를 열지는 않습니다. 이 코드를 프로그램에 추가하면.열기 걸기 및 웹보기에서 열기 웹 링크 [오류] 인조

private static final WebViewClient Webview = null; 
this.mWebView.setWebViewClient(Webview); 

다이얼러를 열 수는 있지만 웹 링크는 웹보기에서 열리지 않지만 실제로는 기본 브라우저에서 열립니다. 그래서 나는 다이얼러와 웹 링크의 전화 번호를 열 수있는 방법에 대한 도움을 받고 싶습니다.

답변

0

사용이

private class HelloWebViewClient extends WebViewClient { 
@Override 
public boolean shouldOverrideUrlLoading(WebView view, String url) { 
    if(url.contains("tel:")) 
    { 
    //make the substring with the telephone number, and invoke intent for dialer 
    } 
else 
    view.loadUrl(url); 
    return true; 
} 

}

그리고 설정 한 웹보기 클라이언트

this.mWebView.setWebViewClient(new HelloWebViewClient()); 

이 링크가 브라우저를 같은 웹보기에서 열, 그리고 있는지 확인합니다으로 . 참고 : setWebViewClient()의 다른 용도를 모두 제거하십시오.

편집 됨 : 해결 될 것입니다!

+0

그래,이게 webview에서 열리는 링크를 고쳐야한다는 것을 알고 있지만 webview와 전화 번호, sms에서 다이얼러와 메시징 앱을 열려면 웹 링크를 각각 열어야한다. 코드를 사용하면 webview의 링크가 열리고 숫자가 클릭 될 때 전화 걸기가 열리지 않습니다. (실제로 코드는 전에 있었지만 번호를 클릭하면 다이얼러를 열 때 물건을 추가 할 때 웹이 열리지 않았습니다. 링크를 webview.) 그래서 내가 뭔가 잘못하고 있었는지 알고 싶었어요. 왜냐하면 전화 번호와 웹 링크를 모두 잡을 수는 없기 때문입니다. 그것은 단지 하나 또는 다른 것을합니다. – user1251268

+0

if (url.contains ("tel :")) {// 하위 문자열을 만들고 전화 걸기 의도를 호출하고, else에서는 view.loadUrl (url)을 사용합니다. } 알았다? – nithinreddy

+0

모든 기능이 제대로 작동 한 후 필자가 제 기능을 설정하는 방식과 관련이 있다는 것을 알았습니다. 당신의 도움을 주셔서 감사합니다. – user1251268