项目资源Android知识Android开发

android的webview和back键

2017-07-08  本文已影响132人  kompasim


这是一个简单的webview实例,你可以看到当单击back键的时候,
如果webview有浏览历史的话history会弹出栈,
如果没有浏览历史的话如果两秒内点击两次侧推出app,不然没有响应。

1. 代码

package com.example.mywork;

import java.util.Timer;
import java.util.TimerTask;

import android.support.v7.app.ActionBarActivity;
import android.support.v4.app.Fragment;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.webkit.WebView;
import android.os.Build;

import android.webkit.WebViewClient;
import android.widget.Toast;

public class MainActivity extends Activity {
    private WebView webView;
    private static boolean mBackKeyPressed = false;//记录是否有首次按键
    

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);
        
        this.initWebView();
    }

    protected void initWebView(){

       this.webView = (WebView)findViewById(R.id.webView);
        this.webView.getSettings().setJavaScriptEnabled(true);

        this.webView.setWebViewClient(new WebViewClient()); 
        this.webView.loadUrl("http://www.baidu.com");
    }
    
    
    @Override  
    public boolean onKeyDown(int keyCode, KeyEvent event) {  
    // TODO Auto-generated method stub  
    if(keyCode==KeyEvent.KEYCODE_BACK){  
        if(this.webView.canGoBack()){
            //需要处理 
            this.webView.goBack();
            return true;
        }else{
            if(!mBackKeyPressed){
                 
                mBackKeyPressed = true;
                new Timer().schedule(new TimerTask() {

                    @Override
                    public void run() {
                        // TODO Auto-generated method stub
                        mBackKeyPressed = false;
                    }//延时两秒,如果超出则擦错第一次按键记录

                }, 2000);
                return true;
                
            }
            else{//退出程序
                this.finish();
                System.exit(0);
            }
        }
    }
        return super.onKeyDown(keyCode,event);
    }

   

    

    
}



class webViewClient extends WebViewClient{ 

    //重写shouldOverrideUrlLoading方法,使点击链接后不使用其他的浏览器打开。 

 @Override 

 public boolean shouldOverrideUrlLoading(WebView view, String url) { 

     view.loadUrl(url); 

     //如果不需要其他对点击链接事件的处理返回true,否则返回false 

     return true; 

 } 

}




上一篇 下一篇

猜你喜欢

热点阅读