package com.andbase.demo.activity; import android.content.Intent; import android.graphics.Bitmap; import android.os.Bundle; import android.support.v7.widget.Toolbar; import android.view.KeyEvent; import android.view.View; import android.view.Window; import android.webkit.JsPromptResult; import android.webkit.JsResult; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import com.andbase.demo.R; import com.andbase.demo.global.AndH5Impl; import com.andbase.library.app.base.AbBaseActivity; import com.andbase.library.global.AbConstant; public class WebCameraActivity extends AbBaseActivity { private WebView mWebView; private AndH5Impl impl = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 显示标题的进度条 getWindow().requestFeature(Window.FEATURE_PROGRESS); setContentView(R.layout.activity_web_camera); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); toolbar.setTitle(R.string.title_web_camera); toolbar.setContentInsetsRelative(0, 0); toolbar.setNavigationIcon(R.drawable.ic_back); toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); mWebView = (WebView) findViewById(R.id.webView); // 设置支持JavaScript脚本 WebSettings webSettings = mWebView.getSettings(); webSettings.setJavaScriptEnabled(true); // 设置可以访问文件 webSettings.setAllowFileAccess(true); // 设置可以支持缩放 webSettings.setSupportZoom(false); // 设置默认缩放方式尺寸是far webSettings.setDefaultZoom(WebSettings.ZoomDensity.FAR); // 设置出现缩放工具 webSettings.setBuiltInZoomControls(true); // 访问assets目录下的文件 //String url = "file:///android_asset/index.html"; String url = "http://www.amsoft.cn/demo/andh5/index_1.php"; //把本类的一个实例添加到js的全局对象window中 impl = new AndH5Impl(this); mWebView.addJavascriptInterface(impl, "AndH5"); // String url = "http://www.baidu.com"; mWebView.loadUrl(url); // String summary = "<html><body>Your html code.</body></html>"; // mWebView.loadData(summary, "text/html", "utf-8"); // 设置WebViewClient mWebView.setWebViewClient(new WebViewClient() { // url拦截 @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { //Toast.makeText(ActivityMain.this, " 拦截到url:" + url,Toast.LENGTH_SHORT).show(); // 使用自己的WebView组件来响应Url加载事件,而不是使用默认浏览器器加载页面 view.loadUrl(url); // 相应完成返回true return true; //return super.shouldOverrideUrlLoading(view, url); } // 页面开始加载 @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { //Toast.makeText(ActivityMain.this, "onPageStarted:" + url,Toast.LENGTH_SHORT).show(); super.onPageStarted(view, url, favicon); } // 页面加载完成 @Override public void onPageFinished(WebView view, String url) { //Toast.makeText(ActivityMain.this, " onPageFinished:" + url,Toast.LENGTH_SHORT).show(); super.onPageFinished(view, url); } // WebView加载的所有资源url @Override public void onLoadResource(WebView view, String url) { //Toast.makeText(ActivityMain.this, " onLoadResource:" + url,Toast.LENGTH_SHORT).show(); super.onLoadResource(view, url); } @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { //Toast.makeText(ActivityMain.this,"错误url:" + failingUrl + "," + description,Toast.LENGTH_SHORT).show(); super.onReceivedError(view, errorCode, description, failingUrl); } }); // 设置WebChromeClient mWebView.setWebChromeClient(new WebChromeClient() { @Override // 处理javascript中的alert public boolean onJsAlert(WebView view, String url, String message, final JsResult result) { //Toast.makeText(ActivityMain.this,"JavaScript的Alert",Toast.LENGTH_SHORT).show(); return super.onJsAlert(view, url, message, result); }; @Override // 处理javascript中的confirm public boolean onJsConfirm(WebView view, String url, String message, final JsResult result) { //Toast.makeText(ActivityMain.this,"JavaScript的Confirm",Toast.LENGTH_SHORT).show(); return super.onJsConfirm(view, url, message, result); }; @Override // 处理javascript中的prompt public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, final JsPromptResult result) { //Toast.makeText(ActivityMain.this,"JavaScript的Prompt",Toast.LENGTH_SHORT).show(); return super.onJsPrompt(view, url, message, defaultValue, result); }; //设置网页加载的进度条 @Override public void onProgressChanged(WebView view, int newProgress) { setProgress(newProgress * 100); super.onProgressChanged(view, newProgress); } //设置程序的Title @Override public void onReceivedTitle(WebView view, String title) { setTitle(title); super.onReceivedTitle(view, title); } }); } public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) { // 返回前一个页面 mWebView.goBack(); return true; } return super.onKeyDown(keyCode, event); } protected void onActivityResult(int requestCode, int resultCode, Intent intent) { switch (resultCode) { case RESULT_OK: if(requestCode == AbConstant.REQUEST_CODE_TAKEPICTURE){ String path = intent.getStringExtra("path"); //Toast.makeText(ActivityMain.this,"照片路径:" + path,Toast.LENGTH_SHORT).show(); mWebView.loadUrl("javascript:takePictureCallBack('"+path+"')"); } if(requestCode == AbConstant.REQUEST_CODE_RECODER){ String path = intent.getStringExtra("path"); //Toast.makeText(ActivityMain.this,"照片路径:" + path,Toast.LENGTH_SHORT).show(); mWebView.loadUrl("javascript:videoRecoderCallback('"+path+"')"); } break; default: break; } } }