Android-WebView基本使用

小编一直任务将web和android组件结合起来做应用可以事半功倍,html5一来就更有说服力了,特别是对于以前从事web开发的兄弟来说

1. webview加入布局文件:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@+id/allPage"

android:layout_width="fill_parent"

android:layout_height="fill_parent">

<WebView android:id="@+id/webview"

android:layout_width="fill_parent"

android:layout_height="fill_parent">

</WebView>

</RelativeLayout>

2. 重写WebChromeClient或webClient,主要是针对提示框和返回键

public class WebBrowserClient extends WebChromeClient {

String title = Constants.appname;

@Override

public void onCloseWindow(WebView window) {

super.onCloseWindow(window);

}

@Override

public boolean onCreateWindow(WebView view, boolean dialog,

boolean userGesture, Message resultMsg) {

return super.onCreateWindow(view, dialog, userGesture, resultMsg);

}

/**

* 覆盖默认的window.alert展示界面,避免title里显示为“:来自file:////”

*/

 public boolean onJsAlert(WebView view, String url, String message, JsResult result) {

final AlertDialog.Builder builder = new AlertDialog.Builder(view.getContext());

builder.setTitle(title).setMessage(message).setPositiveButton("确定", null);

// 不需要绑定按键事件

// 屏蔽keycode等于84之类的按键

builder.setOnKeyListener(new OnKeyListener() {

public boolean onKey(DialogInterface dialog, int keyCode,KeyEvent event) {

Log.v("onJsAlert", "keyCode==" + keyCode + "event="+ event);

return true;

}

});

// 禁止响应按back键的事件

builder.setCancelable(true);

AlertDialog dialog = builder.create();

dialog.show();

result.confirm();// 因为没有绑定事件,需要强行confirm,否则页面会变黑显示不了内容。

return true;

// return super.onJsAlert(view, url, message, result);

}

3. HTML页面里面的定义:

function gopage(url){

window.androidMain.loadURL(url);

}

4. Activity里面的使用

// 初始化WEB页面

private void setupViews() {

mWebView.setHorizontalScrollBarEnabled(false);

mWebView.setVerticalScrollBarEnabled(true);

mWebView.setScrollbarFadingEnabled(true);

mWebView.setWebChromeClient(new WebBrowserClient());

mWebView.setInitialScale(1);

mWebView.setLongClickable(false);

WebSettings mWebSettings = mWebView.getSettings();

mWebSettings.setJavaScriptEnabled(true);

mWebSettings.setUseWideViewPort(true);

mWebSettings.setLoadWithOverviewMode(true);

mWebSettings.setUseWideViewPort(true);

// 支持多点触控缩放

mWebSettings.setSupportZoom(false);

mWebSettings.setBuiltInZoomControls(false);

// 使用缓冲

mWebSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);

mWebView.loadUrl("file:///android_asset/b.html");

ObjectClassHere cc = new ObjectClassHere();

mWebView.addJavascriptInterface(cc, "androidMain");

}

class ObjectClassHere {

public void exitSystem(){

finish();

android.os.Process.killProcess(android.os.Process.myPid());

}

public void loadURL(String url){

String furl = "file:///android_asset/" + url;

mWebView.loadUrl(furl);

}

public void showChaPinAdvs(int cr){

Log.v(tag, "111 showChaPinAdvs currLevel="+cr % 2);

if((cr % 2) == 0){

showadvs = true;

SpotManager.getInstance(context).showSpotAds(context);

}

}

5. web页面的开发周期和效果都要较activity快速,但目前的效果相对一般,有待改进

使用场景有很多,比如吹泡泡【http://zhushou.360.cn/detail/index/soft_id/341284】,泡泡的动画用activity很难实现,但是用html+js就比较容易一些,结合activtiy对话筒的控制就可以做出来了。

时间: 2024-10-14 15:39:53

Android-WebView基本使用的相关文章

Android WebView 开发教程

1.WebView的使用 (a). 创建WebView的实例加入到Activity中 WebView webview = new WebView(this); setContentView(webview); 或者在xml中配置WebView <Webview android:layout_width="match_parent" android:layout_height="match_parent" > </Webview> (b). 访

屏蔽电信流氓广告造成的诡异的问题--Android WebView 长时间不能加载页面

发现在家里的时候用Android App里的WebView打开网站很慢,会有十几秒甚至更长时间的卡住. 但是在电脑上打开同样的网页却很快. 查找这个问题的过程比较曲折,记录下来. 抓取Android网络数据 为了调试这个问题,首先要抓取Android的网络包数据.开始时,是想用Wireshark来抓包的,但是很麻烦,tcpdump在手机要root权限. 于是转换思路,能不能在Android上设置代理,来抓包? 但是fiddler没有linux版本,于是转用BurpSuite了. 设置Androi

Android WebView 输入框键盘不弹出

问题 在Android中使用内嵌的WebView加载HTML网页时,如果html页面中存在输入框.那么在有些手机设备中,当输入框获取焦点时,系统输入法键盘无法正确弹出,从而无法完成正常的输入要求 在做APP时,自己也遇到了这个问题,以下是自己解决的方法,有可能不适合大家所遇到的情况,但值得借鉴~ WebView设置问题 有些时候我们设计的html页面并不能够很好的适应WebView,尤其我们的html页面是为PC浏览器设计的时候,当使用WebView来加载时,界面很可能会发生错乱,当input输

android webview 通过html5播放在线视频 切换大屏

1.添加网络访问权限 <uses-permission android:name="android.permission.INTERNET" /> 2.webview添加全屏支持 developer官方文档关于html5支持视频播放描述如下:In order to support inline HTML5 video in your application, you need to have hardware acceleration turned on, and set

android webview点击返回键返回上一级activity

android webview点击返回键返回上一个activity 1 @Override 2 public boolean onKeyDown(int keyCode, KeyEvent event) { 3 // TODO Auto-generated method stub 4 if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { 5 return true; 6 } 7 return super

Android:WebView中对图片注册上下文菜单

前言 今天一朋友问我一个问题,就是如何在WebView控件中的图片增加上下文菜单,以便增加保存图片等功能.今天就给他简单做了一个演示Demo,现写下来,给有相同问题的朋友提供些许思路吧. 概要实现 其实这个功能很简单,没有太复杂的东西,就是对WebView的控件的使用,一是给WebView注册了上下文菜单事件,二是在响应事件中去判断事件源的类型,如果是图片类型,则把url取出来 注册上下文菜单事件 这个就比较简单了通过下面的代码即可完成. WebView vw = (WebView) findV

android webview &quot;Uncaught SecurityError: Failed to read the &#39;localStorage&#39; property from &#39;Window&#39;: Access is denied for this document.&quot;, source: (1)

这种错误,可以在loadurl之后再调用 localstorage.setitem()即可解决. "Uncaught SecurityError: Failed to read the 'localStorage' property from 'Window': Access is denied for this document.", source:  (1) android webview "Uncaught SecurityError: Failed to read t

android WebView详细使用方法(转)

1.最全面的Android Webview详解 2.最全面总结 Android WebView与 JS 的交互方式 3.你不知道的 Android WebView 使用漏洞

Android WebView 开发详解(一)

转载请注明出处  http://blog.csdn.net/typename/article/details/39030091 powered by meichal zhao 概览: Android WebView在Android平台上是一个特殊的View, 他能用来显示网页,这个类可以被用来在你的app中仅仅显示一张在线的网页,还可以用来开发浏览器.WebView内部实现是采用渲染引擎来展示view的内容,提供网页前进后退,网页放大,缩小,搜索,前端开发者可以使用web inspector(A

Android WebView远程代码执行漏洞简析

0x00 本文参考Android WebView 远程代码执行漏洞简析.代码地址为,https://github.com/jltxgcy/AppVulnerability/tree/master/WebViewFileDemo.下面我们分析代码. 0x01 首先列出项目工程目录: MainActivity.java的代码如下: public class MainActivity extends Activity { private WebView webView; private Uri mUr