WebView浏览本地html
2016-04-07 19:47
393 查看
1.准备html文件
index.html放在Assets文件夹下,供WebChromeClient调用<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>测试JavaScript三种不同的对话框</title> <script language="JavaScript"> function alertFun() { alert("Alert警告对话框!-你好吗?"); } function confirmFun() { if (confirm("访问搜狐?")) { location.href = "http://www.sohu.com"; } else { alert("取消访问!"); } } function promptFun() { var word = prompt("请输入您最想说的一句话", null); if (word) { alert("您说:" + word); } else { alert("呵呵,您沉默了!"); } } </script> </head> <body> <p>三种对话框示例</p> <p>Alert对话框-你好啊!</p> <p> <input type="submit" name="Submit" value="按钮1" onclick="alertFun()" /> </p> <p>Confirm对话框-是否访问搜狐!</p> <p> <input type="submit" name="Submit2" value="按钮2" onclick="confirmFun()" /> </p> <p>Prompt对话框-告诉我你想说的话!</p> <p> <input type="submit" name="Submit3" value="按钮3" onclick="promptFun()" /> </p> </body> </html>
2.建立Android工程文件(WebViewDemo2)
先编写main.xml文件<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.webviewdemo2.MainActivity" > <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="请输入网址:" /> <EditText android:id="@+id/path" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="file:///android_asset/index.html"/> <!-- 注意,file后面必须要有三个斜杠 --> <Button android:id="@+id/button1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="加载" /> <WebView android:id="@+id/webView1" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout>
MainActivity.java
package com.example.webviewdemo2; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.webkit.JsPromptResult; import android.webkit.JsResult; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity { private EditText path; private Button button; private WebView myWebView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); path = (EditText) findViewById(R.id.path); button = (Button) findViewById(R.id.button1); myWebView = (WebView) findViewById(R.id.webView1); WebSettings webSettings = myWebView.getSettings(); webSettings.setJavaScriptEnabled(true); webSettings.setAllowFileAccess(true); webSettings.setBuiltInZoomControls(true); myWebView.setWebChromeClient(new WebChromeClient() { @Override public boolean onJsAlert(WebView view, String url, String message, final JsResult result) { new AlertDialog.Builder(MainActivity.this) .setTitle("Alert对话框") .setMessage(message) .setPositiveButton( android.R.string.ok, new android.content.DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { result.confirm(); } }).setCancelable(false).show(); return true; } @Override public boolean onJsConfirm(WebView view, String url, String message, final JsResult result) { new AlertDialog.Builder(MainActivity.this) .setTitle("Confirm对话框") .setMessage(message) .setPositiveButton( android.R.string.ok, new android.content.DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { result.confirm(); } }) .setNegativeButton( android.R.string.cancel, new android.content.DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { result.cancel(); } }).setCancelable(false).show(); return true; } @Override public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, final JsPromptResult result) { final View dialogView = getLayoutInflater().inflate( R.layout.prompt_view, null); new AlertDialog.Builder(MainActivity.this) .setView(dialogView) // 要加布局直接在这里加,EditText也有焦点,网上的解决方案全错的 .setTitle("Prompt对话框") .setMessage(message) .setPositiveButton( android.R.string.ok, new android.content.DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { String valueString = ((EditText) dialogView .findViewById(R.id.edit)) .getText().toString(); result.confirm(valueString); } }) .setNegativeButton( android.R.string.cancel, new android.content.DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { result.cancel(); } }).show(); return true; } }); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String url = path.getText().toString(); myWebView.loadUrl(url); } }); } }
onJsPrompt里面用到了prompt_view.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity" > <EditText android:id="@+id/edit" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入你想说的话:" android:background="@android:drawable/edit_text" /> </LinearLayout>
效果展示:
相关文章推荐
- Android——列表视图 ListView(三)BaseAdapter
- Android 短信验证码自动填充
- Android 自定义View 总结
- [置顶] android开发之java的一些基础知识详解,java编程语法,扎实自己的android基本功
- iOS 传值集合
- Android开发之MdiaPlayer详解
- Android 倒计时功能的实现
- Cocos2d-x多语言支持解决方式
- Android中的回调
- Android滑动菜单框架完全解析,教你如何一分钟实现滑动菜单特效
- Manifest merger failed : Attribute application@label value=(@string/app_name)
- 如何把apk编译时间和最后次git commit的sha值,写入到app中
- Swift的懒加载和只读属性的介绍
- Android Fragment 小结
- Disunity_V0.5.0 提取Unity生成的Apk的资源
- 转:android实时语音问题分析
- 002.Android硬件开发与应用
- Android中的Message
- AndroidStudio离线使用gradle
- Android官方开发文档Training系列课程中文版:通过NFC共享文件之发送文件到另一台设备