Webview Not Overriding默认浏览器

时间:2013-12-14 13:49:18

标签: javascript android webview

我有一个使用webview创建的浏览器,但每当我在textfield中输入内容并进行搜索时,它都会触发默认浏览器。 当我点击编辑文本字段来写东西时,点击google主页的searchbar,键盘没有弹出,我必须按回按钮然后再次点击searchbar谷歌的主页出现键盘。

public class Browser extends Activity {
    private EditText urlText;
    private Button goButton;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_browser);
    WebView myWebView = (WebView) findViewById(R.id.webview0001);
    myWebView.loadUrl("http://www.google.com");
    myWebView.setWebViewClient(new WebViewClient());
    myWebView.getSettings().setBuiltInZoomControls(true);
    urlText =(EditText)findViewById(R.id.url_field);
     goButton=(Button)findViewById(R.id.go_button);
     goButton.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                            // TODO Auto-generated method stub
                            openBrowser();
                    }
            });

     urlText.setOnKeyListener(new OnKeyListener() {

                    @Override
                    public boolean onKey(View v, int keyCode, KeyEvent event) {
                            // TODO Auto-generated method stub
                            if (keyCode==KeyEvent.KEYCODE_ENTER){
                                    openBrowser();
                                    return true;
                            }

                            return false;
                    }
                    });
}

public void openBrowser(){
    Uri uri=Uri.parse(urlText.getText().toString());
    Intent intent=new Intent(Intent.ACTION_VIEW,uri);
    startActivity(intent);
}
}

1 个答案:

答案 0 :(得分:0)

如果您希望WebView本身处理导航,则应调用WebView.loadUrl()而不是创建VIEW意图。这里的文档http://developer.android.com/reference/android/webkit/WebView.html可能有所帮助。

此外,您需要使用返回false的实现来实现WebViewClient.shouldOverrideUrlLoading(请参阅http://developer.android.com/reference/android/webkit/WebViewClient.html#shouldOverrideUrlLoading(android.webkit.WebView,java.lang.String))。默认情况下,WebView会将URL导航(例如链接点击)传递给系统进行解析,并返回错误的停止行为。